Eu executo o seguinte comando:
grep -o "[0-9] errors" verification_report_3.txt | awk '{print $1}'
e recebo o seguinte resultado:
1
4
0
8
Eu gostaria de adicionar cada um dos números até uma variável de contagem em execução. Existe um liner mágico que alguém possa me ajudar a construir?
variable=$(grep -o "[0-9] errors" verification_report_3.txt | awk '{ SUM += $1} END { print SUM }')
Isso coloca a saída do comando (que é apenas o valor da soma) na variável chamadavariable
"[0-9]\+ errors"
. Isso corresponderá se você tiver uma linha relatando> 9 erros.Tudo isso também pode ser feito no awk:
fonte
Você parece estar usando o sistema GNU ; portanto, se o suporte a expressões regulares do Perl estiver disponível, você pode escrever algo como isto:
PS Modifiquei a expressão regular (adicionei o quantificador +) para permitir números> 9.
PS Como alternativa, o awk é suficiente (assumindo o GNU awk ):
fonte
Tente canalizar a saída do seu grep para o
fonte
Eu uso isso:
Não é eficiente para listas grandes, mas para a maioria dos meus casos de uso, tudo bem. Normalmente, uso uma função de shell para automatizar o processo, de modo que só preciso fornecer um nome de arquivo:
Você sempre pode substituir o marcador de fim de linha por um separador de elemento específico ou classe de caractere se seus dados forem delimitados de outra maneira.
fonte