A menos que você tenha unido linhas, o \n não aparece no espaço padrão de sed : a âncora de fim de linha é $ .
Então, com o GNU sed:
sed -i 's/$/|/' temp.txt
Estou usando ksh .
Eu tenho um arquivo temp.txt com alguns dados delimitados por pipe.
one|two|three|four|five
abc|def|pqr|lmn|xyz
A partir do exemplo, o registro termina com um novo caractere de linha após o valor dos dados na última coluna.
No entanto, quero que o registro termine com um delimitador de pipe e um novo caractere de linha, conforme abaixo:
one|two|three|four|five|
abc|def|pqr|lmn|xyz|
Eu tentei os seguintes comandos, mas ainda sem sucesso:
tr '\n' '|\n' < temp.txt
e
sed -i 's/\n/|\n/g' temp.txt
Estou sentindo falta de algo?
Você pode usar paste :
$ :|paste -d'|' file - > new_file
one|two|three|four|five|
abc|def|pqr|lmn|xyz|
ou perl :
perl -i.bak -ple '$_.="|"' file
Com o GNU sed , você pode substituir o final da linha por | usando:
sed -i 's/$/|/' temp.txt
Isso corresponderá ao final da linha e "substituirá" por | , mas é claro que a linha ainda terminará e manterá seu \n
Você pode usar o GNU sed :
sed -i 's/.*/&|/' file
O caractere especial & corresponde ao padrão correspondente no RHS.
Tags text-processing