awk 필드에서 unix 명령 실행

awk 필드에서 unix 명령 실행

awk 필드에서 basename 명령을 실행하고 싶습니다.

echo "1 /this/is/a/path" | awk '{print $1" "system("/usr/bin/basename " $2)}'

그러나 시스템 명령의 출력은 항상 0을 생성합니다. 실제 출력물을 어떻게 인쇄하나요?

답변1

POSIX적으로:

$ echo "1 /this/is/a/path" | awk '
{
  cmd = "/usr/bin/basename -- " $2;
  cmd | getline out; 
  print $1, out;
  close(cmd);
}'
1 path

관련 정보