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

问题描述 投票:1回答:1

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

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

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

regex awk
1个回答
2
投票

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

尝试:

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

证明:

$ cat foo.txt
%% YES
%%% NO
%%
123
$ awk '/^%%([^%]|$)/ { printf "%s\n", $0 }' foo.txt
%% YES
%%
$ 
© www.soinside.com 2019 - 2024. All rights reserved.