2017-12-17 5 views
1

제외한 모든 문자열로 시작하는 일치하는 라인은 내가 %%하지만 %%%로 시작하는 파일에서 모든 행을 추출하고 싶습니다. 그러한 라인 (및 다른 라인)을 가지고 있다고 foo.txt이 상상해보십시오. 이어서AWK : 패턴

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

그것이 %%%...로 시작하는 라인을 생략하고, %%...로 시작하는 라인을 포함하지만, 또한 라인 함유 생략 %% (포함해야한다). 이것이 어떻게 일치 할 수 있습니까? 내가 명시 적으로 줄의 '나머지'를 '. *'와 일치 시키려고했으나 작동하지 않았습니다.

답변

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 \ 없음"$ 0} ''= 단지'/^%% ([^ %] | $) /'이 그것의 것입니다. –

+1

실제로, 그것은 훨씬 더 관용적이며, 여기에 누군가가 도착할 경우 추가 할 수있는 아주 좋은 것입니다. –