Linux命令之awk

awk中使用shell命令
awk '{cmd="rm "$0;system(cmd)}' filename.txtshell

awk 中输出双引号和单引号segmentfault

awk '{print "\""}'
awk '{print "'\''"}'

统计每行字符分割后特定字符出现的次数
awk -F "," '{if($(NF-1)=="2"){print $0}}' | wc -lbash

统计次数学习

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)区块链



使用awk处理文件中上下关联的两行,例如文件 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.txtcode

解释: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



欢迎订阅「K叔区块链」 - 专一于区块链技术学习

博客地址: http://www.jouypub.com
简书主页: https://www.jianshu.com/u/756c9c8ae984
segmentfault主页: https://segmentfault.com/blog/jouypub
腾讯云主页: https://cloud.tencent.com/developer/column/72548
相关文章
相关标签/搜索