É possível alterar o separador de campos padrão no awk?

3

Estou sempre usando o awk para manipular arquivos separados por vírgulas, portanto, a primeira linha do meu código está sempre alterando o separador de campo para "," assim:

awk 'BEGIN {FS=","}
$2 < 20 {print $1}' myfile.csv

É possível alterar os padrões do awk para que a vírgula seja o default FS? Não é um grande problema, mas apenas tornaria as coisas um pouco mais simples. Eu tentei googling, mas não achei nada útil; pode ser que isso não seja possível, mas eu pensei em perguntar!

    
por evsmith 15.02.2012 / 12:04

2 respostas

1

EDIT: Em geral, como foi destacado nos comentários, a maneira segura de usar um alias é usar um nome diferente, por exemplo, awkc

Crie um alias que defina o separador de campos como vírgula . Coloque o alias em ~/.bashrc ou, se ~/.bashrc sources (inclui) ~/.bash_aliases , e coloque-o lá. Você pode subseqüentemente substituí-lo novamente em seu comando para o que quiser,

Esteja ciente de que se você usar 'awk' como o nome do seu alias, seu script é totalmente não portátil . Ele só será executado corretamente em um sistema que tenha esse alias em particular .

alias awkc='awk -F","'

Exemplo (usando o alias)

echo "a,b c" | awkc '{print $1" -- "$2}'  

Saída

a -- b c
    
por 15.02.2012 / 12:36
4

Para alterar o separador de campos padrão do awk, use a opção -F <fs> ( fs sendo um caractere simples ou uma expressão regular).

Você também pode alterar este fs com a variável interna awk FS .

    
por 15.02.2012 / 12:15

Tags