文件d.txt如下內容
ggg 1
portals: 192.168.5.41:3260
werew 2
portals: 192.168.5.43:3260
如何把文件d.txt內容變為如下內容
ggg 192.168.5.41:3260
werew 192.168.5.43:3260
解題思路:
[root@localhost study]# awk '/port/{print a" "$2}{a=$1}' d.txt
ggg 192.168.5.41:3260
werew 192.168.5.43:3260
'/port/{print a" "$2}{a=$1}'
處理第一行的時候,以port開頭嗎?很明顯,不以port開頭,所以那個pattern不匹配,action不執行。但執行了后面的a=$1
處理第二行的時候,以port開頭,打印出來a和本行$2,再處理就是個循環過程。
詳細步驟:
由於第一行沒有匹配以port開頭的,所以print a" "$2不執行,執行a=$1. a=ggg
由於第二行有匹配以port開頭的,所以print a" "$2行執行,由於a=ggg,所以輸出 ggg 192.168.5.41:3260
由於第三行沒有匹配以port開頭的,所以print a" "$2不執行,執行a=$1. a=werew
由於第四行有匹配以port開頭的,所以print a" "$2行執行,由於a=werew,所以輸出 werew 192.168.5.43:3260
由此得到結果:
ggg 192.168.5.41:3260
werew 192.168.5.43:3260