在 awk 字段上运行 unix 命令

Ste*_*Kin 3 awk

我想在某个 awk 字段上运行 basename 命令。

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

但输出总是从系统命令产生 0。如何打印真实输出?

cuo*_*glm 5

POSIXly:

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