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