나는 방금 awk를 배우기 시작했고 주변에있는 모든 버전에 대해서는 약간 혼란 스럽다. 모든 유닉스 계열 시스템에서 발견되는 "버전"이 있습니까? 알다시피, 평범한 바이? 표준 awk가 -F 옵션을 지원합니까?
나는 방금 awk를 배우기 시작했고 주변에있는 모든 버전에 대해서는 약간 혼란 스럽다. 모든 유닉스 계열 시스템에서 발견되는 "버전"이 있습니까? 알다시피, 평범한 바이? 표준 awk가 -F 옵션을 지원합니까?
답변:
awk 가장 일반적인 것으로 대부분의 유닉스 계열 시스템에서 발견되며 가장 오래된 버전과 최신 버전보다 열등하다.
모크 - 코드 기반이 바이트 코드 인터프리터를 기반으로하는 AWK 구현이 빠르다.
노크 - AWK 언어가 개발되는 동안 저자는 새 버전을 발표했습니다 (따라서 엔 - 엔 ew awk) 혼동을 피하십시오. AWK의 Python 3.0처럼 생각하면됩니다.
둔한 사람 - GNU awk에서 약식. 개발자가 i18n 지원을 추가하려고 시도한 유일한 버전입니다. 허용 된 사용자는 자체 C 공유 라이브러리를 작성하여 자체 "플러그인"으로 확장 할 수 있습니다. 이 버전은 Linux 용 표준 구현이며 원래 AWK는 Unix v7 용으로 작성되었습니다.
jawk (java 구현), bwk (Brian W. Kernighan의 구현) 등과 같은 다른 버전이 있습니다.
file /etc/alternatives/awk
보고 symbolic link to /usr/bin/mawk
너는 단지 사용할 수있다. awk
. 이것은 POSIX에 의해 정의되므로 모든 POSIX 준수 시스템에 존재해야합니다.
그만큼 -F
매개 변수는 저것에 의해 위임 된 게다가.
gensub()
, 함께 시험하다 awk
& gt; gawk
, 네가 가기 좋은 거 같아.
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.
mawk --posix ''
mawk 1.3.3을 사용하면 실패하지만 mawk 1.3.4를 사용하면 오류 메시지와 함께 성공합니다.
먼저 빠른 답변 :
귀찮게 할 필요는 없습니다. 시스템의 awk
둘 중 하나에 대한 심볼릭 링크 일뿐입니다. mawk
또는 gawk
더 중요한 것은 3 가지 버전 모두, awk
, mawk
과 gawk
완전히 호환됩니다. 속도 차이가있다. awk
/ gawk
과 mawk
되는 (더 빨리 될).
유일한 예외는 nawk
일부 기능이 부족하지만 야생에서이 기능을 찾을 수있는 기회는 거의 없습니다.
awk
거의 모든 * NIX 기반 시스템에 적용될 것입니다.하지만 그것이 지원하는 것의 정확한 세부 사항은 약간 바뀔 것입니다. 그것은 완전히 가능하기 때문에 단순히 다른 버전으로 심볼릭 링크 될 것입니다. /bin/sh
종종 특정 쉘에 링크되는 경우가 많으며 bash
또는 그 유도체 중 하나. (기록을 위해, 나는 또한 기계의 많은 부분을 알고있다. vi
~에 심볼릭 링크 됨 vim
게다가.)
그만큼 Wikipedia AWK 페이지 AWK를 이해하기 시작하는 데 좋은 출발점 참고서입니다.
그만큼 필드 구분 기호 옵션 ' -F
'는 AWK - afaik의 모든 변형에서 지원됩니다.
/usr/bin/awk
nawk, gawk 또는 BusyBox awk (gawk와 비슷한 동작)를 실행합니다.