Processa cada linha de um arquivo no bash

6

Quando quero fazer algo com cada linha de um arquivo, geralmente escrevo

cat my_file | while read a
do
gzip "$a"
done

O gzip é apenas um exemplo, pode ser qualquer coisa.

O que eu estou querendo saber é se existe outra maneira de obter as linhas do que cat file | while read ?

    
por Nifle 15.01.2011 / 19:50

3 respostas

14

Você não precisa usar cat :

while read line; do
    echo "$line"
done < my_file

Eu não acho que haja uma maneira mais simples.

    
por 15.01.2011 / 20:54
2

O mais simples, eu acho, seria usar xargs , por exemplo,

xargs -L1 gzip < my_file

A opção -L1 informa xargs para processar uma linha de entrada de cada vez. Você pode dar uma olhada no paralelo GNU , que é muito semelhante ao xargs , mas mais poderoso em algumas situações.

    
por 15.01.2011 / 21:06
2
IFS="\n\b"; for i in $MYROWOFCONTENT; do echo $i; done;
    
por 20.07.2012 / 16:53