O que é melhor entre um loop for e um loop while para o shell Korn

O que é melhor entre um loop for e um loop while para o shell Korn

Eu tenho um arquivo file_list.txt que contém uma lista de nomes de arquivos a serem processados. E para todos os arquivos presentes no file_list.txt, tenho que remover os espaços em branco e os caracteres extras de nova linha. Como posso conseguir isso. Usar um loop while será melhor ou um loop for?

Responder1

Se for sobre editar o conteúdo do file_list.txt,você usaria uma ferramenta de edição de texto, não um shell loop, como:

sed 's/[[:space:]]*$//; # remove trailing whitespace
     /./!d; # remove empty lines' < file_list.txt > new_file_list.txt

Ou para edição no local:

perl -nli.back -e 's/\s+$//;print if /./' file_list.txt

(remova .backse não precisar de cópias de segurança do original).

Se file_list.txtcontém uma lista de arquivos e são esses arquivos cujo conteúdo você deseja editar, então, novamente, um loop não é ideal, a menos que você queira executar um comando de edição por arquivo.

Se o conteúdo de file_list.txtfor compatível com xargso formato de entrada, é onde os nomes dos arquivos são separados por espaços em branco (incluindo nova linha) e aspas duplas, aspas simples ou barra invertida podem escapar dos espaços em branco e entre si (permitindo qualquer caractere), então você pode simplesmente fazer:

xargs < file_list.txt perl -nli.back -e 's/\s+$//;print if /./' --

informação relacionada