awk フィールドで unix コマンドを実行する

awk フィールドで unix コマンドを実行する

awkフィールドでbasenameコマンドを実行したいと思います。

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

ただし、システムコマンドの出力は常にゼロを生成します。実際の出力をどのように印刷しますか?

ベストアンサー1

POSIX的に:

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

おすすめ記事