Algumas explicações do comentário / resposta @ manatwork:
-
grep
versã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)
-
-
sed
versã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 extrap
no final para imprimir linhas correspondentes. -
awk
versã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
-