Execute o comando unix no campo awk

2

Eu quero executar o comando basename em um determinado campo awk.

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

mas a saída sempre produz um 0 a partir do comando do sistema. Como faço para imprimir a saída real?

    
por Sten Kin 09.02.2015 / 18:09

1 resposta

4

POSIXly:

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

Tags