O problema é que o primeiro argumento para printf
deve ser uma string de formato. Em strings de formato, os sinais de porcentagem são tratados especialmente. Para evitar o problema com sua entrada contendo um sinal %
, tente:
$ awk '{printf "%s",(NR==1?"":"|")$0}' text
PROMOTIONAL - ATL|36% Extra Money : NML 60=65(Rs.47.85 now, rest Rs.17.15 in 48hrs) + A&B @20p/m + ACCC DD for 11 day. 100=100 1 days.|2017-11-21|09:00 AM|10:00 PM|ENGLISH|OR|0.0|10
Aqui, o primeiro argumento para printf, sendo a string de formato, é %s
. O %s
instrui o awk para pegar o segundo argumento e formatá-lo como uma string. O segundo argumento pode incluir %
ou não, não importa.
Ou, de forma equivalente, podemos usar:
$ awk '{printf "%s%s",(NR==1?"":"|"),$0}' text
PROMOTIONAL - ATL|36% Extra Money : NML 60=65(Rs.47.85 now, rest Rs.17.15 in 48hrs) + A&B @20p/m + ACCC DD for 11 day. 100=100 1 days.|2017-11-21|09:00 AM|10:00 PM|ENGLISH|OR|0.0|10