读取两个匹配单词之间的文本,比较并写入另一个文件

读取两个匹配单词之间的文本,比较并写入另一个文件

我正在编写 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

相关内容