Execute o comando para cada linha de um arquivo no bash, passando linhas como entrada padrão

3

Como faço para passar alguma entrada para uma linha de comando por linha (ou seja, invocar o comando para cada linha)?

xargs não funciona porque passa as linhas como argumentos, não como entrada padrão.

O caso específico em que isso surgiu foi a decodificação de um arquivo cujas linhas eram strings codificadas em base64.

    
por Tgr 26.02.2015 / 01:51

1 resposta

8

Pode ser feito com um loop while:

produce | while IFS= read -r line; do echo "$line" | process; done | consume

(para alguns comandos arbitrários produce , process , consume que todos usam entrada / saída padrão) mas meh. Tem que haver uma maneira mais elegante de fazer isso.

    
por 26.02.2015 / 01:51