在 awk 字段上运行 unix 命令

在 awk 字段上运行 unix 命令

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

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

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

答案1

POSIXly:

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

相关内容