A solução sed do GNU precisa de -i para edição in-line:
sed -i 's/$/ 1/' file.txt
(Com BSD sed , você precisa de sed -i '' )
Em awk , você precisa contornar isso com um arquivo temporário:
awk '{ print $0 " 1" }' file.txt > tmp && mv tmp file.txt
Na verdade, sed também cria um arquivo temporário, mas -i lida com isso
O problema com awk '{ print $0 " 1" }' < file.txt > file.txt :
Os redirecionamentos foram realizados antes de awk obter o controle. > file.txt truncará o arquivo. Tente em um terminal:
>file
O file será de tamanho zero, mesmo se antes o arquivo tivesse conteúdo. Portanto, awk não possui dados para ler desse arquivo. Esse é o mesmo problema que com sed .
Solução final com \r quebras de linha:
perl -pi -e 's/\r\n|\n|\r/ 1\n/g' file.txt