Se tiver que ser grep
:
grep -Em2 "([^|]+|){6}[^|]+G50483.*' file | tail -n1
-
-E
ativa expressões regulares estendidas -
-m2
para na segunda correspondência -
'...'
da expressão regular-
[^|]+|
procura por um ou mais caracteres (+
) que não são um canal|
seguido por um canal. -
(...){6}
isto é feito 6 vezes consecutivamente, então estamos no 7º campo agora. Sua pergunta menciona o sexto campo, mas assumi o sétimo campo por causa da entrada de exemplo. Altere para{5}
, se desejar. -
[^|]+
agora procuramos por caracteres que não são pipes até o padrão de pesquisa final: -
G50483
do padrão real
-
-
tail -n1
é necessário, porquegrep
sozinho não pode imprimir apenas a enésima ocorrência,tail
corta a outra ocorrência que somente a segunda avalia.