obtendo o erro ao usar o sed em um loop-sed: nenhum arquivo de entrada

1

Estou usando sed em um loop while para remover os espaços em branco finais de um arquivo que contém uma lista de arquivos. Os espaços em branco estão sendo removidos. Mas estou recebendo a mensagem sed:no input files .

A seguir está o loop while que estou usando:

while IFS= read -r line; 
        do
            echo "tester: $line"
            sed -i 's/\s*$//' $line ;
        done < file_list.txt
    
por Raghunath Choudhary 28.11.2017 / 11:42

1 resposta

2

Como Ipor e glenn disseram, com base em seu relatório do comentário de B Camada sobre tail -1 file_list.txt , já que há uma linha em branco no final desse arquivo, quando o laço while lê essa linha em branco, a% A variável$line recebe um valor vazio, não deixando nenhum nome de arquivo para sed processar.

$ cat i
file1
file2

$ while IFS= read -r line; do printf -- "-->%s<--\n" "$line"; done < i
-->file1<--
-->file2<--
--><--

A correção aqui é excluir essa linha em branco final de file_list.txt ou envolver um teste em torno do processamento real para testar a existência do arquivo:

# do ...
if [ -f "$line" ]
then
  # process file
fi
# done ...

e sempre cite suas variáveis !

    
por 28.11.2017 / 17:06

Tags