$ awk '/[$]"[[:space:]]*$/{print;next} {printf "%s",$0}' file
"Field1"|"Field2"|"Field3"|"ufghjkrtyrtyfgh$"
"Field1"|"Field2continue on line 2continue on line 3"|"Field3"|"ufghjkrtyrtyfgh$"
"Field1"|"Field2"|"Field3"|"ufghjkrtyrtyfgh$"
Como funciona
-
/[$]"[[:space:]]*$/{print;next}Para qualquer linha que termine com
$seguido por", seguido opcionalmente por espaço em branco, isso (1) imprime a linha e (2) ignora os comandos restantes e instrui o awk a recomeçar nonextde linha.Em expressões regulares do awk,
$significa o fim da linha. Se queremos combinar um sinal de dólar real, devemos escapar de alguma forma. A maneira mais confiável de escapar é colocar entre colchetes:[$]. Na regex acima,[$]é seguido pelo aspas duplas"e seguido por[[:space:]]*. A classe de caractere[[:space:]]corresponde a qualquer caractere de espaço em branco e o*significa que devemos corresponder a zero ou mais deles. Isso é seguido pelo$sem escape, que corresponde ao final da linha. -
printf "%s",$0Para qualquer outra linha, isso diz ao awk para imprimir a linha sem um caractere de nova linha.