Aliado a um comando awk com sucesso agora não usará OFS [closed]

1

Então, consegui obter um comando com a capacidade de obter e obter as informações de um arquivo específico que queria e, em seguida, tive um problema com o alias:

find ./ -type f -name filename.ext  -exec grep 'information' {} + | sort | awk -v OFS='\n' '{print $5, $1, $2, $3 }'

De lá, consegui descobrir que precisava alterar meu alias depois de pesquisar e fiz assim:

find ./ -type f -name filename.ext  -exec grep 'information' {} + | sort | awk -v OFS='\n' '{print \, \, \, \ }'

Então agora ele imprime, mas eu ainda queria usar o OFS, mas não tenho certeza da sintaxe para fazer o OFS carregar. Obrigado antecipadamente!

 alias aliascommand="find ./ -type f -name filename.ext  -exec grep 'information' {} + | sort | awk -v \OFS='\t' '{print \ \ \ \ }'"

Uma variação dos itens acima é o que eu coloco no meu alias.

    
por trazinaz 27.06.2018 / 22:19

1 resposta

0

Se você fizer isso:

alias foo="...'{print $5 $1 $2 $3 }'"

Os parâmetros posicionais serão expandidos quando o alias for definido. Eles estão dentro de uma string de aspas duplas, afinal. Você não quer isso, então você teve que escapar deles com barras invertidas. Como alternativa, você poderia ter colocado todo o texto do alias entre aspas simples, mas como deseja usar aspas simples no alias, isso fica bastante difícil.

Esse \n deve ficar bem entre as aspas duplas.

Em qualquer caso, você provavelmente deve usar uma função. Dessa forma, você não precisa pensar sobre o nível extra de citações em torno dos comandos.

mycommand() {
    find ./ -type f -name filename.ext -exec grep 'information' {} + |
       sort |
       awk -v OFS='\n' '{print $5, $1, $2, $3 }'
}
    
por 27.06.2018 / 23:11