Usando um loop For para classificar e salvar arquivos usando o Grep

3

Eu tenho um grande número de arquivos que são numerados de uma maneira como file_01_01.out , em que o primeiro número é o grupo ao qual o arquivo pertence e o segundo é o número do arquivo no grupo - portanto, file_10_07.out é o 7º arquivo no 10º grupo.

Eu quero copiar algum texto desses arquivos e agrupá-los em alguns arquivos de saída. Eu tentei usar isso e realmente não funciona, e não consigo entender o porquê:

for i in {0..21};
  do
    grep "text" file_$i_*out > out_$i.txt;
done;

Não sei por que isso não funciona, mas definitivamente há lógica na saída. Não é apenas a saída que eu queria, e alguns arquivos são simplesmente ignorados.

    
por Max 20.09.2017 / 10:11

2 respostas

6

(em adição a @Philippos): Bash está tentando expandir a variável $i_ em vez de $i . Experimente ...${i}_... :

for i in {00..21}
  do     
    grep "text" file_${i}_*out > out_$i.txt
  done
    
por 20.09.2017 / 12:02
5

Seu padrão será expandido para file_1_ , mas você precisará de file_01_

Use for i in {00..21};

    
por 20.09.2017 / 10:31

Tags