Como deletar o registro com base no último caractere do registro anterior em um arquivo

Como deletar o registro com base no último caractere do registro anterior em um arquivo

Como excluímos o registro atual com base no último caractere do registro anterior e no primeiro caractere do registro atual.

exemplo:

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

O requisito é excluir um registro cujo registro anterior termine com aspas duplas e o registro atual não comece com aspas duplas. No exemplo acima, o 4º registro deve ser excluído da saída.

Responder1

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

ou se preferir algum destes:

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

informação relacionada