ファイル内の前のレコードの最後の文字に基づいてレコードを削除する方法

ファイル内の前のレコードの最後の文字に基づいてレコードを削除する方法

前のレコードの最後の文字と現在のレコードの最初の文字に基づいて現在のレコードを削除する方法。

例:

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"

関連情報