Algumas explicações do comentário / resposta @ manatwork:
-
grepversão:grep '^[^|]\+|||\(.\+\?|||\)'-
^: corresponde ao começo da linha -
[^|]: corresponde a qualquer caractere com exceção| -
\+: corresponde uma ou mais vezes ao padrão anterior -
|||: corresponde ao seu separador -
\(e\): salve o valor correspondente entre parênteses em -
.: corresponde a qualquer caractere -
\+\?: uma ou mais vezes, mas não ganancioso -
|||: corresponde ao seu separador novamente -
: corresponde ao texto anterior visto entre parênteses
A ideia aqui é pular o início da linha até o primeiro separador, depois salvar o valor encontrado até o final do segundo separador e depois corresponder apenas à linha que tenha exatamente o mesmo valor que
após o segundo operador (significando o 3º campo) -
-
sedversão:sed -n '/^[^|]\+|||\(.\+\?|||\)/p'O mesmo significado de
grep, com um/adicional no início e no final da linha para indicar o padrão, além de um caractere de comando extrapno final para imprimir linhas correspondentes. -
awkversão:awk -F'\|\|\|' '$2==$3'-
-F'\|\|\|': indique o separador de campos:|||escape neste caso -
'$2==$3': entrada de filtro somente onde o segundo e terceiro campo são iguais
-