Por que o awk sub não está substituindo minha entrada

0

Eu tenho me esforçado para escrever um programa awk que tomaria arquivos de entrada e mostraria o nome do arquivo original e separado por espaço apenas na segunda coluna. Por que o seguinte comando não está funcionando para isso?

echo -e "abc/123\ndef/456" | awk '{l=$1; sub("./*", "", l); print "mv " $1, $l}'

Para o registro, as saídas acima

mv abc/123 abc/123
mv def/456 def/456
    
por Przemek Hugh Kaznowski 31.07.2018 / 21:52

1 resposta

0

l é a variável que contém o texto substituído. $l é o valor do número da coluna referenciado pelo valor armazenado na variável l . Como o valor l não inicia com dígitos, o awk trata a string como o número "0", portanto você obtém $0 , que é o registro atual.

Você quer isso em vez

print "mv", $1, l
    
por 31.07.2018 / 22:23

Tags