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

0

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 eu tenho que remover os espaços em branco à direita e os caracteres extras da nova linha. Como posso conseguir isso? Usar um loop while será melhor ou um loop for?

    
por Raghunath Choudhary 28.11.2017 / 13:52

1 resposta

2

Se for sobre editar o conteúdo do file_list.txt , você usaria uma ferramenta de edição de texto, não um loop de shell , 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 .back se você não precisar de cópias de backup do original).

Se file_list.txt contiver uma lista de arquivos e 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.txt for compatível com o formato de entrada xargs , é onde os nomes de arquivos são espaços em branco (incluindo nova linha) separados e aspas duplas, aspas simples ou contrabarra podem escapar de espaços em branco e uns aos outros (permitindo qualquer caractere) então você pode apenas fazer:

xargs < file_list.txt perl -nli.back -e 's/\s+$//;print if /./' --
    
por 28.11.2017 / 14:18

Tags