Awk可以使用變量NR和FNR來處理多個文件。
NR:當前記錄的序號,多個文件序號遞增
FNR:當前文件中記錄的序號,每個文件從1開始
awk NR的示例
- 處理單個文件
➜ awk '{print "ordinal number: " NR " - " $0}' test1.txt
- 處理多個文件
➜ awk '{print "ordinal number: " NR " - " $0}' test1.txt test2.txt
awk FNR的示例
- 處理單個文件
➜ awk '{print "ordinal number: " FNR " - " $0}' test1.txt
- 處理多個文件
➜ awk '{print "ordinal number: " FNR " - " $0}' test1.txt test2.txt
awk NR == FNR的示例
NR == FNR:
1.讀取兩個或多個文件時,確定它是否是第一個文件;
2.打印文件關聯內容;
1. 判斷是否是第一個文件
➜ awk '{if(NR==FNR) {print "No.1 :" FNR " ->" $0}else{print "No.2 :"FNR " ->"$0}}' test1.txt test2.txt
2.打印文件關聯內容
#兩個文件:
➜ awk cat test4.txt
apple|00009
jerry|00008
➜ awk cat test5.txt
00009|55|09
00009|100|03
00009|59|04
00009|89|10
00008|55|09
00008|79|12
#想要得到的結果:
apple|00009|55|09
apple|00009|100|03
apple|00009|59|04
apple|00009|89|10
jerry|00008|55|09
jerry|00008|79|12
➜ awk -F "|" '{if(NR==FNR){z[$2]=$1}else{print z[$1] "|" $0}}' test4.txt test5.txt
閱讀更多 閃電小白獸 的文章