2017-12-17 16 views
1

%%で始まり、%%%で始まらないファイルからすべての行を抽出します。そのような線(と他の線)を持つことを想像してください(foo.txt)。次いでawk:パターン以外の文字列で始まる行を一致させる

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

%%...で始まる行を含み、それは%%%...で始まる行を省略しているが、それはまた、(含まれるべきである)%%を含む行のみを省略しています。これはどのように一致させることができますか?私は明示的に行の '残り'を '。*'と一致させようとしましたが、うまくいかなかったのです。

答えて

2

2番目のパーセントの後にも行の終わりに一致します。

試行:

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

証明:

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

' '/^%%([^%] | $)/ {printfの "%sにする\ n"、$ 0}' '= '/^%%([^%] | $)/'それは自分のものです。 –

+1

確かに、それははるかに慣用的で、誰かがここに来る場合に追加するのは非常に素晴らしいことです。 –

関連する問題