Como prefixo a barra invertida na saída [duplicada]

3

Este é o meu arquivo de entrada.

3400,2
3400,27
3400,DC
3400,TF
5600,KA
5600,KN
5600,TF
0313,EX
0313,EY
0313,EZ
0313,FD
0313,FE
0313,JB
0313,JC
0313,KG
0313,T8

Eu quero que minha saída seja

400,2\|3400,27\|3400,DC\|3400,TF\|5600,KA\|5600,KN\|5600,TF\|0313,EX\|0313,EY\|0313,EZ\|0313,FD\|0313,FE\|0313,JB\|0313,JC\|0313,KG\|0313,T8

Estou executando o código da seguinte forma:

cat f.txt | tr '\n' "\|"
3400,2|3400,27|3400,DC|3400,TF|5600,KA|5600,KN|5600,TF|0313,EX|0313,EY|0313,EZ|0313,FD|0313,FE|0313,JB|0313,JC|0313,KG|0313,T8

cat f.txt | tr '\n' "\\|"
3400,200,2700,DC00,TF00,KA00,KN00,TF13,EX13,EY13,EZ13,FD13,FE13,JB13,JC13,KG13,T8

Como posso alcançar meu resultado esperado?

    
por anu 05.05.2017 / 21:22

1 resposta

1

Você pode fazer isso de várias maneiras, com muitas ferramentas, por exemplo, com awk assim:

cat f.txt | awk 'BEGIN{ORS="\|"}1' 

@don_cristi observou corretamente que "Isto irá imprimir um trailing \ | e não uma nova linha", então aqui está uma versão que corrige ambos, se isso for necessário para o seu caso de uso:

awk 'p{printf "%s\|",p} {p=$0} END{print p}'
    
por 05.05.2017 / 21:54

Tags