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