awk:匹配以除模式之外的任何字符串开头的行

时间:2017-12-17 00:36:49

标签: regex awk

我想从以%%但不是%%%开头的文件中提取所有行。想象一下foo.txt有这样的台词(和其他人)。然后

awk '/^%%[^%]/ { printf "%s\n", $0 }' foo.txt

包含以%%...开头的行,它省略了以%%%...开头的行,但它也省略了包含%%的行 (应该包括在内)。怎么能匹配?我试图明确地将该行的'rest'与'。*'匹配,但这不起作用。

1 个答案:

答案 0 :(得分:2)

在第二个百分比之后匹配行尾。

尝试:

awk '/^%%([^%]|$)/ { printf "%s\n", $0 }' foo.txt

证明:

$ cat foo.txt
%% YES
%%% NO
%%
123
$ awk '/^%%([^%]|$)/ { printf "%s\n", $0 }' foo.txt
%% YES
%%
$