2014-06-11 7 views
0

그래서 지금 유닉스 스크립트를 읽었습니다.유닉스 awk f = 1은 무엇입니까

foo=/some/directory/rules 
awk '/^test=/ { print "test="foo; f=1 } 
f==0 { print } 
{ f=0 }' \ 
/some/other/directory/file 

내 생각 엔이 (때문에 "테스트 ="foo는의) 실행되지해야한다는 것입니다, 그러나 그것은 않습니다 - 그래서 나는하려는이 생각하는 경우 '/ 일부/기타/디렉토리/파일의 아웃 라인 '와 일치하면 praefix "test ="로'/ some/directory/rules '에 쓰여지고 다른 정보는 콘솔에 출력됩니다.

설명서 페이지에서 뭔가를 찾을 수 없으며 예제에서도 f =?를 사용하지 않습니다. 구문

+4

, 그것은 아무것도라고 할 수있다. 또한''test = "foo"가 실행되지 않는 이유는 무엇입니까? –

+0

파일로 리디렉션해야하므로 작동하지 않습니다. 또한 'foo'는 awk에 어떻게 든 제공되어야하는 bash 변수이기 때문에 설정되지 않습니다. 예를 들어,'awk -v foo = $ foo'. – fedorqui

+0

@Jidder, 이제 모든 것이 의미가 있습니다. D – Nozdrum

답변

2

효과적인 awk 프로그래밍, 제 3 판 아놀드 로빈스에 의해 awk 구문에 대해 매우 혼란 스럽다. 여러분이 올린 스크립트의 목적은 test=으로 시작하는 줄을 제외하고 이라는 줄로 바꾼 경우를 제외하고 /some/other/directory/file의 내용을 stdout으로 출력하는 것입니다.

더 많은 AWK 틱 방법

가 단순히 것이다 작성 : 그것은 단지 '1'의 값 f` 변수를`지정되어

foo=/some/directory/rules 
awk -v foo="$foo" '{print (/^test=/ ? "test="foo : $0)}' /some/other/directory/file