'awk -F_ “{print $ 1}”' não removendo tudo antes do sublinhado em cada linha

1

Estou usando o Mac. Eu tenho um diretório no qual os arquivos têm nomes como ABC_2016-06-08_09-23.csv . Eu quero extrair a parte de cada nome de arquivo antes do primeiro sublinhado. Eu tentei fazer ls | awk -F_ "{print $1}" , mas recebi os nomes completos dos arquivos. O que estou fazendo errado?

    
por man on laptop 26.10.2016 / 10:13

1 resposta

1

O problema aqui é que você está usando aspas duplas em vez de aspas simples, então o correto é:

awk -F_ '{print $1}'

Quando você usa aspas duplas, o shell expande $1 para o que estiver definido. Se não for nada, ele se expande para nada e, portanto, você obtém um simples {print} que imprime a linha inteira.

$ echo "$ 1"

$ echo "hello_you" | awk -F_ "{print $1}"
hello_you
$ echo "hello_you" | awk -F_ '{print $1}'
hello

Veja como podemos torná-lo útil de alguma forma:

$ myvar="ueee"
$ echo "hello_you" | awk -F_ "{ueee=23; print $myvar}"
23
    
por 26.10.2016 / 10:34

Tags