Ler texto entre duas palavras correspondentes, comparar e escrever em outro arquivo

0

Estou fazendo scripts shell do Unix, preciso gravar a saída em outro arquivo.

Eu tenho um arquivo de log como 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

No arquivo acima, eu preciso verificar se todos os 3 parâmetros estão disponíveis ou não, se não eu preciso atribuir com o valor "N / A" para esse parâmetro e escrever em outro final.txt . Eu tentei com

bash-4.1$ pr -ats, /home/user/Shop.log --columns 3 > final.txt

mas está dando algum resultado errado para mim por falta de linhas.

    
por user3131936 29.08.2016 / 13:31

1 resposta

0

Eu não acho que haja algum comando para modificar facilmente o arquivo de entrada para este problema.

Eu não testei todos os casos de canto, este comando sed ajuda quando a última linha de entrada contém o parâmetro 'Local'

$ sed -i -E '$ s|^(Place.*)|\nShop=N/A|' /home/user/Shop.log

Em seguida, usando perl , os parâmetros ausentes são adicionados com o valor 'N / A' e a saída é passada para 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

Observe que paste -d, - - - também pode ser usado em vez de pr -ats, --columns 3

    
por 29.08.2016 / 15:00

Tags