
¿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"