1. 程式人生 > >Linux20180503 六周第五次課(5月3日)awk擴展

Linux20180503 六周第五次課(5月3日)awk擴展

awk

六周第五次課(5月3日)
復習
擴展
awk 中使用外部shell變量技術分享圖片http://ask.apelearn.com/question/199

相對來說,awk更像是一種簡單的編程語言


A=44echo "ABCD" | awk -v GET_A=$A ’{print GET_A}’
說明:-v選項用於定義參數,這裏表示將變量A的值賦予GET_A。
有多少個變量需要賦值,就需要多少個-v選項。與之等價的:應用於腳本中:


技術分享圖片

技術分享圖片


awk 合並一個文件 技術分享圖片http://ask.apelearn.com/question/493
我有這樣的需求,需要把兩個文件中,第一列相同的行合並到同一行中。舉個例子,有兩個文件,內容如下


cat 1.txt
1 aa
2 bb
3 ee
4 ss

cat 2.txt
1 ab
2 cd
3 ad
4 bd
5 de

合並後的結果為:

1 ab aa
2 cd bb
3 ad ee
4 bd ss
5 de

實現的命令為:
awk 'NR==FNR{a[$1]=$2}NR>FNR{print $0,a[$1]}' 1.txt 2.txt
技術分享圖片

這個涉及到

解釋:NR表示讀取的行數,FNR表示讀取的當前行數
所以其實NR==FNR 就表示讀取2.txt的時候。 同理NR>FNR表示讀取1.txt的時候
數組a其實就相當於一個map把一個文件多行連接成一行 技術分享圖片http://ask.apelearn.com/question/266


awk中gsub函數的使用 技術分享圖片http://ask.apelearn.com/question/200

awk 截取指定多個域為一行 技術分享圖片http://ask.apelearn.com/question/224

過濾兩個或多個關鍵詞 技術分享圖片http://ask.apelearn.com/question/198

用awk生成以下結構文件 技術分享圖片http://ask.apelearn.com/question/5494

awk用print打印單引號 技術分享圖片http://ask.apelearn.com/question/1738

合並兩個文件 技術分享圖片http://ask.apelearn.com/question/945

awk的參考教程 技術分享圖片http://www.cnblogs.com/emanlee/p/3327576.html


Linux20180503 六周第五次課(5月3日)awk擴展