Linux20180503 六周第五次課(5月3日)awk擴展
阿新 • • 發佈:2018-05-05
awk 六周第五次課(5月3日)
復習
擴展
awk 中使用外部shell變量
http://ask.apelearn.com/question/199
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
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
復習
擴展
awk 中使用外部shell變量
![技術分享圖片](http://blog.51cto.com/static/js/ueditor1.4.3/themes/default/images/spacer.gif)
相對來說,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
![1525324105541734.png 技術分享圖片](http://s1.51cto.com/images/20180503/1525324105541734.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
這個涉及到
解釋:NR表示讀取的行數,FNR表示讀取的當前行數
所以其實NR==FNR 就表示讀取2.txt的時候。 同理NR>FNR表示讀取1.txt的時候
數組a其實就相當於一個map把一個文件多行連接成一行 http://ask.apelearn.com/question/266
awk中gsub函數的使用
![技術分享圖片](http://blog.51cto.com/static/js/ueditor1.4.3/themes/default/images/spacer.gif)
awk 截取指定多個域為一行
![技術分享圖片](http://blog.51cto.com/static/js/ueditor1.4.3/themes/default/images/spacer.gif)
過濾兩個或多個關鍵詞
![技術分享圖片](http://blog.51cto.com/static/js/ueditor1.4.3/themes/default/images/spacer.gif)
用awk生成以下結構文件
![技術分享圖片](http://blog.51cto.com/static/js/ueditor1.4.3/themes/default/images/spacer.gif)
awk用print打印單引號
![技術分享圖片](http://blog.51cto.com/static/js/ueditor1.4.3/themes/default/images/spacer.gif)
合並兩個文件
![技術分享圖片](http://blog.51cto.com/static/js/ueditor1.4.3/themes/default/images/spacer.gif)
awk的參考教程
![技術分享圖片](http://blog.51cto.com/static/js/ueditor1.4.3/themes/default/images/spacer.gif)
Linux20180503 六周第五次課(5月3日)awk擴展