Como alias um comando do awk

2

Eu quero colocar o alias abaixo em um termo mais fácil, dizer aprint.

 awk '{print $1}'

eu fiz

alias aprint "awk \'{print $1}\'"   //But gave error ----> Missing }.

então eu dei,

alias aprint "awk \'\{print $1\}\'"  
//But gave error ----> awk: '{print , awk: ^ invalid char ''' in expression

Não sei como resolver isso, por favor, ajude ...

    
por RoyOneMillion 03.01.2014 / 08:05

2 respostas

4

Existem alguns problemas com o seu alias.

Primeiro, o nome de um alias é separado de seu valor por = , não de espaço em branco.

Segundo, um ' não pode ser aninhado em outras citações, escapando-as com \ .

Seu alias funcionará se for escrito assim:

alias aprint='awk "{print \}"'

em que $ é precedido por \ para evitar que $1 seja expandido pelo shell.

    
por 03.01.2014 / 08:49
3

Melhor que um alias , crie uma função para esse tipo de coisa:

function aprint() { awk '{print $1}'; }

Você pode usá-lo, por exemplo, assim:

$ date
Fri Jan  3 08:09:23 CET 2014
$ date | aprint
Fri

Você provavelmente deseja parametrizá-lo também:

function aprint() { awk "{print \$${1:-1}}"; }

Dessa forma, ele funcionará não apenas com o primeiro, mas com qualquer coluna:

$ date | aprint 2
Jan
$ date | aprint 6
2014

Usando ${1:-1} , o argumento é opcional e, por padrão, ele usará 1.

    
por 03.01.2014 / 08:09

Tags