2016-07-10 6 views
-1

필자는 쉘 스크립팅을 배우기 위해 필자에게 필자에게 필자가 요구하는 쉘 스크립팅 온라인 강의를 진행할 것이다.Nawk 명령어의 특정 라인 이해하기

"awk"및 "nawk"명령을 발견했으며 학습이 아직 완료되지 않았습니다.

간단히 말해 awk/nawk가 특정 패턴을 검색하고 일치하는 항목이 발견되면 작업을 수행한다는 것을 알고 있습니다. 심지어 그에도 불구하고

, 나는 다음 행을 위해 무엇을 의미하는지 이해할 수 없었다 :

eval $(cat ${MMORPHYDIR}/${PWFILE} | nawk ' /^#BEGIN '${ENV_NAME}'/,/^#END '${ENV_NAME}'/ { print }' | egrep "${USEFULL_PARAM}") 

이 줄을 수행하거나 수행하기위한 것입니다 이해하는 저를 도와주세요.

+0

요즘 'nawk'는 본질적으로 '유일한'awk입니다. 비교해 보면 'awk'와 같은 오래된 awk이 드물게 발생합니다 (그러나 Solaris 나 AIX와 같은 몇몇 시스템에서는'awk'을 발견 할 수 있습니다; 'awk'는'nawk' 또는'oawk'입니다). GNU Awk은'nawk'에 명시되지 않은 시설을 가지고 있습니다 (하지만'nawk'에있는 모든 편의점을 지원하지만'oawk'에는 포함되지 않습니다). 이것은 귀하의 질문에 큰 영향을주지 않습니다. –

+0

이 코드는 [UUoC -'cat'의 쓸데없는 사용]을 보여줍니다 (https://stackoverflow.com/questions/11710552/useless-use-of-cat/). –

답변

1
... awk '/start/,/end/' 

은 시작 패턴과 끝 패턴 사이의 레코드를 인쇄합니다. {print}은 함축되어 있으므로 생략 할 수 있습니다. 스크립트의 ^은 줄의 시작을 나타냅니다. 고양이와 평가가 필요하지 않습니다

참고, 같은도 그렙뿐만 아니라 awk 스크립트에 포함 할 수

$ awk '...' "${MMORPHYDIR}/${PWFILE}" 

과 같이 쓸 수있다.

+1

'cat'은 불필요하다고 동의합니다; 'grep'는 아마도 awk이 실제로 같은 정규 표현식을 지원하기 때문에 아마도 불필요 할 것입니다. 'eval'이 확실하지 않습니까? 그것은'cat | awk | grep' 앙상블을 쉘 스크립트로 사용합니다. 출력에 변수 설정이 포함되어있는 경우 'eval'은 변수를 설정합니다. 평범한 'awk'은 그렇지 않습니다. –

+0

예, 맞습니다. 'eval'이 필요할 수도 있습니다. 스크립트에서 나오는 것이 확실하지 않았습니다. – karakfa

1

awk 모든 UNIX 계열 시스템에서 텍스트를 조작하기위한 표준 범용 도구입니다. awk에는 다양한 핵심 기능과 함께 몇 가지 차이점이 있습니다. 이 1977s Solaris에서 가 오 LD AWK (예 :/빈/AWK, 일명 이전, 깨진 AWK를에 후계자로 약 30 년 전에 명명 된 때문에 nawk은 매우 불행하게도 이름 N 으으 AWK 인해야 절대로 사용하지 마십시오.) POSIX에서 요구하는 최소한의 awk 기능 (예 : 문자 클래스)을 지원하지 않기 때문에 실제로는 사용하지 않는 것이 좋습니다. 여기서 중요한 교훈 : 소프트웨어 엔터티의 이름에 "new"라는 단어를 사용하지 마십시오! 이 모든 POSIX 기능을 더한 유용한 확장 기능의 톤을 지원합니다 일반적으로 사용할 수 있으며, 매우 잘 설명되어 있습니다, 그리고 대규모 사용자 기반을 가지고로

요즘 사용하는 가장 좋은 AWK는, AWK, gawk NU G입니다 .

WRT :

쉘 또는 AWK에서 수행해서는 안 다스 것들에 대해 말 그대로 일을 완전 엉망이다
eval $(cat ${MMORPHYDIR}/${PWFILE} | nawk ' /^#BEGIN '${ENV_NAME}'/,/^#END '${ENV_NAME}'/ { print }' | egrep "${USEFULL_PARAM}") 

. 그것을 설명하려고 노력하는 것은 콘크리트로 스크류 드라이버를 혼합하는 사람을 설명하려고하는 것과 같습니다. 이제까지 그것을보고 잊어 버려라.

awk를 배우려면 Arnold Robbins의 Effective Awk Programming, 4th Edition을 읽으십시오.