내 명령(예: awk, sed)을 Solaris의 최신 버전으로 업데이트할 수 있습니까?

내 명령(예: awk, sed)을 Solaris의 최신 버전으로 업데이트할 수 있습니까?
 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/shksh

표준 sh(예:아니요 /bin/shSolaris에서는) 다음을 사용할 수도 있습니다.

 command -p awk

꼭 전화주세요가지고 다닐 수 있는이전 것 대신에.

관련 정보