awk中使用shell命令awk '{cmd="rm "$0;system(cmd)}' filename.txt
shell
awk 中输出双引号和单引号segmentfault
awk '{print "\""}' awk '{print "'\''"}'
统计每行字符分割后特定字符出现的次数awk -F "," '{if($(NF-1)=="2"){print $0}}' | wc -l
bash
统计次数学习
awk -F "," ' BEGIN { count1=0;count2=0;count3=0} { if((NF-1)==1){count1+=1} else if((NF-1)==2){count2+=1} else{count3+=1} } END {print NR,count1,count2,count3} ' 20151120.txt
awk中取对应的列:取整行$0
,取第一列$1
,取最后一列$NF
,取倒数第二列$(NF-1)
区块链
foo.txt
有以下内容
abc portals: 192.168.5.41:3260 def portals: 192.168.5.43:3260
如何把文件foo.txt内容变为以下内容spa
abc 192.168.5.41:3260 def 192.168.5.43:3260
方法: awk '/port/{print a" "$2}{a=$1}' foo.txt
code
解释:blog
处理第一行的时候,以port开头吗?很明显,不以port开头,因此那个pattern不匹配,action不执行。但执行了后面的a=$1
处理第二行的时候,以port开头,打印出来a和本行$2,再处理就是个循环过程。因为第一行没有匹配以port开头的,因此
print a" "$2
不执行,执行a=$1
, a=abc
因为第二行有匹配以port开头的,因此print a" "$2
行执行,因为a=abc,因此输出 abc 192.168.5.41:3260
因为第三行没有匹配以port开头的,因此print a" "$2
不执行,执行a=$1
,a=def
因为第四行有匹配以port开头的,因此print a" "$2
行执行,因为a=def,因此输出 def 192.168.5.43:3260rem
由此获得结果:get
abc 192.168.5.41:3260 def 192.168.5.43:3260