2017-03-15 5 views
1

변수와 부정과 조건 : 내가 bash는 다음 AWK 명령을 시도했습니다awk는 여러 검색 내가 포함하는 작은 테스트 파일이

awk this 
and not awk this 
but awk this 
so do awk this 

그리고, 그러나 각각 어떤 출력을 생성하지 :

f=awk; awk '/$f/ && !/not/' test.txt 
f=awk; awk '/\$f/ && !/not/' test.txt 
f=awk; awk '/"$f"/ && !/not/' test.txt 
f=awk; awk -v f="$f" '/f/ && !/not/' gtest.txt 

큰 따옴표 사용 은 ! 때문에 셸에서 "이벤트를 찾을 수 없습니다"오류가 발생합니다.

동일한 명령에서 변수를 검색하고 다른 문자열을 무효화하려면 어떻게해야합니까? 이 같은

답변

2

사용 awk :

f='awk' 

awk -v f="$f" -v n='not' '$0 ~ f && $0 !~ n' file 
awk this 
but awk this 
so do awk this 

또는 당신은 n='not'awk에 통과하지 않으려면 : 나를 위해 둔한하는

awk -v f="$f" '$0 ~ f && $0 !~ /not/' file 

awk this 
but awk this 
so do awk this 
+1

감사합니다. 나는 이것이 그것을 할 것이라고 생각한다. –

0

AWK 포인트와는 괜찮 았는데 다음 :

awk -vf=awk '$0 ~ f && !/not/' file 
+0

여기에 Gawk에만 해당되는 것은 없습니다. 이것은 Anubhava의 기존 대답을 수정 한 것으로 보입니다. – tripleee