
前のレコードの最後の文字と現在のレコードの最初の文字に基づいて現在のレコードを削除する方法。
例:
abcd|efg
"xyz"|"ghi"
"lmn"|"qrs"
123|abc
要件は、前のレコードが二重引用符で終わり、現在のレコードが二重引用符で始まっていないレコードを削除することです。上記の例では、4 番目のレコードを出力から削除する必要があります。
答え1
$ awk '(prev !~ /"$/) || ($1 ~ /^"/){print} {prev=$1}' file
abcd|efg
"xyz"|"ghi"
"lmn"|"qrs"
または、次のいずれかをご希望の場合:
$ 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"