Awk
讀取兩個匹配單詞之間的文本,比較並寫入另一個文件
我正在編寫 Unix shell 腳本,我需要將輸出寫入另一個文件。
我有一個日誌文件
Shop.log
,例如Place=hyd Location=Abids Shop=Bigbazar Place=Mumbai Location=Worli Shop=ShoppersStop Place=Hyd Location=Madhapur Place=Mumbai Location=Thane Shop=Adidas Place=hyd Location=Abids Place=Mumbai Shop=ShoppersStop
在上面的文件中,我需要檢查所有 3 個參數是否都可用,如果沒有,我需要為該參數分配“N/A”值並寫入另一個
final.txt
. 我試過了bash-4.1$ pr -ats, /home/user/Shop.log --columns 3 > final.txt
但由於缺少線條,它給了我一些錯誤的結果。
我認為沒有一些命令可以輕鬆修改此問題的輸入文件。
我沒有測試所有極端情況,
sed
當輸入的最後一行包含“Place”參數時,此命令會有所幫助$ sed -i -E '$ s|^(Place.*)|\1\nShop=N/A|' /home/user/Shop.log
然後,使用
perl
缺少的參數添加“N/A”值並將輸出傳遞給pr
$ perl -e '@file = `cat abc.txt` ; @s = ("Place", "Location", "Shop"); > for($j=0;$j<=$#file;) {if($file[$j] !~ /^$s[$i]/){print "$s[$i]=N/A\n"} > else {print $file[$j]; $j++} $i=($i+1)%3;} > ' | pr -ats, --columns 3 > final.txt $ cat final.txt Place=hyd,Location=Abids,Shop=Bigbazar Place=Mumbai,Location=Worli,Shop=ShoppersStop Place=Hyd,Location=Madhapur,Shop=N/A Place=Mumbai,Location=Thane,Shop=Adidas Place=hyd,Location=Abids,Shop=N/A Place=Mumbai,Location=N/A,Shop=ShoppersStop
注意
paste -d, - - -
也可以用來代替pr -ats, --columns 3