Apare um valor vindo de um campo awk

1

Estou analisando um arquivo e uso o awk para obter o primeiro e o terceiro campo.

Tudo isso é bom; mas no primeiro campo eu gostaria de cortar os últimos 4 caracteres dessa string; até agora eu não encontrei uma maneira de fazer isso no awk, e a única maneira de fazer isso é fazer várias chamadas, então eu salvo a saída do awk em 2 variáveis, e então apare a primeira string.

Existe uma maneira mais eficiente de fazer isso? É assim que o arquivo se parece

abcdefghi.234,12345,xyz
riosadsef.543,19432,eis
baifafsag.342,01934,eod

Isso é o que eu corro no loop

echo $output | awk -F, "{print $1, $3}"

Isso imprimirá a linha corretamente, mas eu quero cortar $ 1, removendo os últimos 4 caracteres

    
por rataplan 04.11.2016 / 06:41

1 resposta

2

Um método é usar a função substr do awk. Por exemplo, começando com essa entrada:

$ cat input
abcdefghi.234,12345,xyz
riosadsef.543,19432,eis
baifafsag.342,01934,eod

Podemos imprimir as colunas um e três, omitindo os quatro últimos caracteres da coluna um com:

$ awk -F, '{print substr($1, 1, length($1)-4), $3}' input
abcdefghi xyz
riosadsef eis
baifafsag eod
    
por 04.11.2016 / 06:46