awk, mawk, nawk, gawk ... 뭐라구?


28

나는 방금 awk를 배우기 시작했고 주변에있는 모든 버전에 대해서는 약간 혼란 스럽다. 모든 유닉스 계열 시스템에서 발견되는 "버전"이 있습니까? 알다시피, 평범한 바이? 표준 awk가 -F 옵션을 지원합니까?

답변:


31

awk 가장 일반적인 것으로 대부분의 유닉스 계열 시스템에서 발견되며 가장 오래된 버전과 최신 버전보다 열등하다.

모크 - 코드 기반이 바이트 코드 인터프리터를 기반으로하는 AWK 구현이 빠르다.

노크 - AWK 언어가 개발되는 동안 저자는 새 버전을 발표했습니다 (따라서 - ew awk) 혼동을 피하십시오. AWK의 Python 3.0처럼 생각하면됩니다.

둔한 사람 - GNU awk에서 약식. 개발자가 i18n 지원을 추가하려고 시도한 유일한 버전입니다. 허용 된 사용자는 자체 C 공유 라이브러리를 작성하여 자체 "플러그인"으로 확장 할 수 있습니다. 이 버전은 Linux 용 표준 구현이며 원래 AWK는 Unix v7 용으로 작성되었습니다.

jawk (java 구현), bwk (Brian W. Kernighan의 구현) 등과 같은 다른 버전이 있습니다.


3
오리지널 awk는 내가 가지고있는 유닉스 계열 시스템에는 존재하지 않는다. 자주, /usr/bin/awk nawk, gawk 또는 BusyBox awk (gawk와 비슷한 동작)를 실행합니다.
dubiousjim

8
2012 년 말 현재 Ubuntu / Debian 시스템은 기본적으로 mawk를 설치합니다. 명령 행 file /etc/alternatives/awk 보고 symbolic link to /usr/bin/mawk
Mike Sherrill 'Cat Recall'

MAWK는 진정한 다차원 배열과 같은 모든 GAWK 기능을 가지고 있습니까?
WYSIWYG

나는 이것이 @WYSIWYG에 늦었다는 것을 알고있다. 그러나 mawk에는 몇 가지 단점이있다. 주로 regexp가있다. 비록 당신이 휴대용 구현 IMO를 원한다면 gawk를 설치하는 것이 가장 좋다.
Jordon Bedwell

1
@dubiousjim 우분투는 유니버설 저장소에 original-awk가 있습니다.
jarno

5

너는 단지 사용할 수있다. awk. 이것은 POSIX에 의해 정의되므로 모든 POSIX 준수 시스템에 존재해야합니다.

그만큼 -F 매개 변수는 저것에 의해 위임 된 게다가.


...하지만 다른 버전과의 호환성을 보장하기 위해 사용할 수있는 것을 알려면 표준을 확인하십시오. 예를 들어, 사용하지 마십시오. gensub(), 함께 시험하다 awk & gt; gawk, 네가 가기 좋은 거 같아.
dmckee

@dmckee, 사용할 수 있습니다. gawk --posix gawk가 POSIX 표준에 따라 작동하도록합니다. 또한 스크립트가 표준을 따르는 지 확인합니다. 너는 사용할 수있어. awk --posix '' 2>/dev/null 우분투에서는 gawk, mawk 또는 original-awk가 awk로 사용되지만 posix-option은 gawk에서만 인식됩니다. --posix는 original-awk의 마지막 옵션이어야합니다. 너는 사용할 수있어. awk -W posix '' gawk와 mawk.
jarno

@dmckee, 오 mawk --posix '' mawk 1.3.3을 사용하면 실패하지만 mawk 1.3.4를 사용하면 오류 메시지와 함께 성공합니다.
jarno

3

먼저 빠른 답변 :

귀찮게 할 필요는 없습니다. 시스템의 awk 둘 중 하나에 대한 심볼릭 링크 일뿐입니다. mawk 또는 gawk 더 중요한 것은 3 가지 버전 모두, awk, mawkgawk 완전히 호환됩니다. 속도 차이가있다. awk / gawkmawk 되는 (더 빨리 될).

유일한 예외는 nawk 일부 기능이 부족하지만 야생에서이 기능을 찾을 수있는 기회는 거의 없습니다.


3
완전히 호환되지는 않지만 옵션에 차이가 있습니다. 아마도 구문 분석 / 언어가 같을 수도 있습니다.
Bdoserror

위키피디아 (Wikipedia)에 따르면. FreeBSD, NetBSD, OpenBSD 및 OS X는 nawk를 사용합니다.
jarno

이리 gawk가 mawk보다 빠르다는 예입니다.
jarno

0

awk 거의 모든 * NIX 기반 시스템에 적용될 것입니다.하지만 그것이 지원하는 것의 정확한 세부 사항은 약간 바뀔 것입니다. 그것은 완전히 가능하기 때문에 단순히 다른 버전으로 심볼릭 링크 될 것입니다. /bin/sh 종종 특정 쉘에 링크되는 경우가 많으며 bash 또는 그 유도체 중 하나. (기록을 위해, 나는 또한 기계의 많은 부분을 알고있다. vi ~에 심볼릭 링크 됨 vim 게다가.)


항상 심볼릭 링크되어 있지 않아도됩니다. 때로는 단단히 연결되어 있습니다.
dubiousjim

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.