grep script - linhas de saída ao mesmo tempo em eco

1

Gostaria de melhorar um script simples que fiz.

Embora funcione bem para um único argumento e faça o que eu quero, tenho problemas para executá-lo em paralelo ou ao mesmo tempo para todos os meus valores de argumento. Eu gostaria de melhorá-lo para rodar em múltiplos argumentos e mostrar minhas descobertas de grep ao mesmo tempo e não em seqüência, enquanto não é a boa escolha? Qualquer ajuda para fazer este trabalho de saída seria muito apreciada. Muito obrigado.

  • eu tenho vários arquivos arquivo1.log file1.txt arquivo2.log arquivo2.txt
  • precisa digitar algo do * .log e algo do * .txt
  • gera as linhas grep para todos os argumentos no mesmo eco.

meu script até agora é assim:

#!/bin/bash

filename=$@



error=$(grep  'ERROR' ${filename}.l)
phone=$(grep 'phone'  ${filename}.e)
invalid=$(grep  'invalid' ${filename}.l)

while true ; do 

echo -e  " Start of message \n :  
         $error \n
         $invalid \n
        $phone \n
          End of message \n "

break 
done 
exit

É assim que eu gostaria que a saída aparecesse

Start of message 

error form  file1
Phone number from file1
Invalid from file1

error form  file2
Phone number from file2
Invalid from file2

error form  file3
Phone number from file3
Invalid from file3 

etc 

End of message 
    
por foreverlearner 24.08.2016 / 19:47

2 respostas

1

$ @ é um array não uma string, então o que você realmente quer fazer é usar um loop para iterar pelo array. Tente isto:

#!/bin/bash
for filename in "$@"; do
   error=$(grep  'ERROR' "${filename}.l")
   phone=$(grep 'phone'  "${filename}.e")
   invalid=$(grep  'invalid' "${filename}.l")
   echo -e  " Start of message \n :
      $error \n
      $invalid \n
      $phone \n
      End of message \n "
done 
exit 
    
por 24.08.2016 / 20:08
1
echo "Start of message "

for file in "$@"
do

error=$(grep  'ERROR' ${file}.l)
phone=$(grep 'phone'  ${filee}.e)
invalid=$(grep  'invalid' ${file}.l)

echo -e  "${error} from ${file}\n ${phone} from ${file}\n  $invalid from ${file}\n\n"

done
echo -e "End of message \n"
    
por 24.08.2016 / 20:01