Cómo eliminar el registro según el último carácter del registro anterior en un archivo

Cómo eliminar el registro según el último carácter del registro anterior en un archivo

¿Cómo eliminamos el registro actual según el último carácter del registro anterior y el primer carácter del registro actual?

ejemplo:

abcd|efg
"xyz"|"ghi"
"lmn"|"qrs"
123|abc

El requisito es eliminar un registro cuyo registro anterior termine con comillas dobles y el registro actual no comience con comillas dobles. En el ejemplo anterior, el cuarto registro debe eliminarse de la salida.

Respuesta1

$ awk '(prev !~ /"$/) || ($1 ~ /^"/){print} {prev=$1}' file
abcd|efg
"xyz"|"ghi"
"lmn"|"qrs"

o si prefieres alguno de estos:

$ awk '!( (prev ~ /"$/) && ($1 !~ /^"/) ){print} {prev=$1}' file
abcd|efg
"xyz"|"ghi"
"lmn"|"qrs"

$ awk '{f=((prev ~ /"$/) && ($1 !~ /^"/)); prev=$1} !f' file
abcd|efg
"xyz"|"ghi"
"lmn"|"qrs"

información relacionada