我正在编写 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
但由于缺少行,它给了我一些错误的结果。
答案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