bash-3.00# awk '{print NR}' f1.txt
1
2
3
4
그러나 FNR은 아무것도 인쇄하지 않습니다.
awk '{print FNR}' f1.txt
위의 줄은 어떤 출력도 제공하지 않습니다. Sun OS에 있는 awk에는 FNR 변수가 없는 것 같습니다. 그렇다면 이것을 표준화하기 위해 할 수 있는 일이 있나요? 또한 모든 최신 명령에 대한 라이브러리를 얻을 수 있고 sed, sort 등과 같은 현재 명령을 설치/업데이트할 수 있습니다.
SunOS 알 수 없음 5.10 Generic_142910-17 i86pc i386 i86pc
답변1
awk
단지 하나 이상의 버전 이 아닙니다 . 각각 여러 버전이 있는 awk 구현이 많이 있습니다. 모든 Unices에는 Unix와 함께 제공되는 내부적으로 유지 관리되는 자체 도구 및 소프트웨어 세트가 있으며 이러한 도구의 사용은 일반적으로 정확한 구현 버전에 따라 다릅니다.
GNU awk로 교체하기 시작했다면 /usr/bin/awk
다음에서 다운로드할 수 있습니다.http://gnu.org, 그러면 문제가 발생하게 됩니다.
일부 Unices는 일부 표준 유틸리티의 대체 또는 무료 소프트웨어 버전을 패키지로 제공합니다. 일반적으로 다른 위치( /opt/gnu
예: GNU 도구의 경우) 또는 다른 이름(GNU awk의 경우 )에 설치하여 gawk
이를 수행합니다 . 그렇지 않은 경우 소스 코드로 다운로드하여 빌드한 다음 다른 위치나 다른 이름으로 수동으로 설치할 수 있습니다.
하지만 솔라리스에는 일부 유틸리티의 매우 오래된 비표준 버전이 포함되어 있고 /usr/bin
최신/표준 버전은 다른 곳에 보관되어 있는 것으로 알려져 있습니다.
이것은 awk의 경우입니다. /usr/bin/awk
솔라리스의 awk는 1979년의 원본 awk를 기반으로 합니다. awk는 1988년경에 다시 작성되어 awk라고 불렸습니다 nawk
. 모든 최신 awk
구현은 이를 기반으로 합니다 (POSIX 사양이 기반이기 nawk
때문입니다 ).awk
Solaris에서 시스템을 업데이트하여 $PATH
표준/POSIX 환경(일반적으로/usr/xpg4/bin
및/또는 /usr/xpg6/bin
처음에 넣기$PATH
), awk
표준이 됩니다. 또는 nawk
대신 전화할 수도 있습니다 awk
.
이는 와 동일하며 또는 을 sh
사용할 수 있습니다 ./usr/xpg4/bin/sh
ksh
표준 sh(예:아니요 /bin/sh
Solaris에서는) 다음을 사용할 수도 있습니다.
command -p awk
꼭 전화주세요가지고 다닐 수 있는이전 것 대신에.