
我們如何根據上一筆記錄的最後一個字元和目前記錄的第一個字元刪除目前記錄。
例子:
abcd|efg
"xyz"|"ghi"
"lmn"|"qrs"
123|abc
要求是刪除前一筆記錄以雙引號結尾且目前記錄不以雙引號開頭的記錄。在上面的範例中,應從輸出中刪除第四筆記錄。
答案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"