recebendo o erro ao usar sed em um loop-sed:no input files

recebendo o erro ao usar sed em um loop-sed:no input files

Estou usando sedum 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

Responder1

Como Ipor e Glenn disseram, com base no seu relatório do comentário da camada B sobre tail -1 file_list.txt, como há uma linha em branco no final desse arquivo, quando o whileloop lê essa linha em branco, a $linevariável recebe um valor vazio, não deixando nenhum nome de arquivo para sedprocessar.

$ cat i
file1
file2

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

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

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

esempre cite suas variáveis!

Responder2

Tive o mesmo problema, para mim foi porque não passei o arquivo de entrada para sed CMD

Exemplo:

boy=$1
boy2=$2
boy3=$3
while IFS="," read -r col1 col2
do
 if [ "$col1" == "oke" ]; then

    sed -i "s/$col2/$boy/g" test.txt
  fi
done < test.txt

informação relacionada