saída de comando baseada no padrão

2

Considere que eu tenho um comando com algum padrão, por exemplo:

$ grep "some string" file-[0-99]

como posso gravar o resultado em um arquivo que terá seu nome baseado no valor atual de um padrão, para que

$ grep "some string" file-0 > processed-0
$ grep "some string" file-1 > processed-1
...

Algo como $ grep "some string" file-[0-100] > processed-[0-100] , embora este não funcione.

    
por xaxa 03.07.2015 / 15:50

1 resposta

7

[0-99] é o mesmo que [0-9] , [0-100] significa [01] . [...] define uma classe de caracteres, você não pode usar strings mais longas lá.

Para resolver sua pergunta original, você pode usar um loop:

for i in {0..99} ; do
    grep "some string" file-"$i" > processed-"$i"
done

Ou, se nem todos os arquivos de entrada possíveis existirem, você poderá extrair o sufixo do nome do arquivo:

for file in file-* ; do
    suffix=${file##*-}
    grep "some string" "$file" > processed-"$suffix"
done
    
por choroba 03.07.2015 / 16:05