grep / awk linhas específicas baseadas em campos específicos; usando variável ksh com awk

2

Eu tenho este arquivo de entrada: file_in.txt (delimitado por pipe)

3345:tyg|rty|27|0|0|ty6|{89|io|}62|0
3346:tyg|rtyuio|63|0|1|ty6|{89|gh|}45|0
3347:tyu|ray|24|0|0|ty6|{89|uh|}27|0
3348:tyg|rtoy|93|0|1|ty6|{89|yh|}1|0
3349:tyo|rtert|28|0|0|ty6|{89|gh|}27|0

Eu quero obter apenas as linhas que têm o 9º valor de campo como }27 usando '|' como delimitador para que minha saída seja:

3347:tyu|ray|24|0|0|ty6|{89|uh|}27|0
3349:tyo|rtert|28|0|0|ty6|{89|gh|}27|0

Abaixo, o comando funciona bem:

awk -F"|" '{ if ($9 == "}27") print $0 }' file_in.txt

Mas eu quero usar uma variável shell em vez de "}27" para o qual tentei isso:

taskid="}27"    
awk -v tid="$taskid" -F"|" '{ if ($9 == "}tid") print $0 }' file_in.txt

Por favor, ajude-me a descobrir onde estou indo errado com este comando. Qualquer outra sugestão de comando para alcançar o mesmo é apreciada.

    
por Richa Garg 21.04.2016 / 18:12

1 resposta

2

tente

taskid="}27"    
awk -v tid="$taskid" -F"|" '$9 == tid' file_in.txt
  • a ação padrão é imprimir a linha.
  • você não precisa incluir a variável.
por 21.04.2016 / 18:17

Tags