Provavelmente, a maneira mais fácil seria usar um alias de shell (adicioná-lo a ~/.bashrc
ou equivalente ao seu shell):
alias awktab="awk -v FS='\t' -v OFS='\t' -v ORS='\t'"
Eu escrevo comandos ad hoc awk no cygwin para processar arquivos delimitados por tabulação. Praticamente todo comando começa com:
BEGIN {FS="\t";OFS="\t";ORS="\r\n";}
Como posso tornar esses separadores o padrão para evitar digitá-los sempre?
Você também pode adicionar um atalho a ele. Por exemplo, para ter Ctrl + G insira awk -v FS='\t' -v OFS='\t' -v ORS='\t'
no seu terminal, adicione esta linha ao seu ~/.inputrc
:
Control-G: "awk -v FS='\t' -v OFS='\t' -v ORS='\t'"
Em seguida, abra um novo terminal, digite Ctrl + G e pronto!
Como o POSIX define quais são os padrões de variáveis especiais , a opção simples é sobrescrevê-los em tempo de execução (a opção não-simples é alterar a fonte).
No caso de gawk
, você pode colocar seu código comum (geralmente em BEGIN {}
blocks) em um arquivo de biblioteca. Se você colocar esses itens no caminho da biblioteca padrão (provavelmente /usr/share/awk/
ou /usr/local/share/awk
) ou onde a variável de ambiente AWKPATH
apontar, não será necessário usar o caminho completo:
gawk -f tabfile.awk [...]
Ao contrário de outros awks, gawk
permite várias opções de -f
e permite que você misture os dois -f
e a origem do programa na linha de comando.
As versões recentes suportam uma opção adicional de arquivo -i
include (desde o gawk-4.1.0) e uma diretiva @include
(desde 4.0.x AFAICT). Esta é uma versão um pouco mais robusta e amigável de -f
:
gawk '@include "tabfile"; /foo/ { ... }'
Os itens acima incluirão tabfile.awk
de AWKPATH
ou caminho da biblioteca padrão. @include
tem sido suportado há muito tempo, mas por meio de um igawk
um wrapper de script de shell para gawk
, agora é um recurso do gawk.
Isso é compatível com as outras duas boas respostas, por exemplo:
alias awktab="gawk -i tabfile"
Há uma diferença sutil entre usar essa abordagem de arquivo de biblioteca e usar -v
na linha de comando: a opção de linha de comando entra em vigor antes que qualquer código awk seja executado, portanto eles são definidos pelo código da biblioteca de tempo. Isso pode ser importante se o código da biblioteca usar essas variáveis (por exemplo, lendo arquivos de dados).
Tags awk