我们如何根据上一条记录的最后一个字符和当前记录的第一个字符删除当前记录。
例子:
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"