私はUnixシェルスクリプトを作成しており、出力を別のファイルに書き込む必要があります。
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
ただし、行が不足すると誤った結果が表示されます。
ベストアンサー1
この問題の入力ファイルを簡単に修正できるコマンドがないと思います。
すべての特別なケースをテストするわけではありません。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