Se você tem grep
com pcre
opção:
$ grep -oP '\|\K[^|]+(?=\|)' ip.txt | sort -u
a4-123
b4-124
bad-girl
dummy
good-guy
hello
hub
lab
lol
short
wow
yes
yoo
-
-o
imprime apenas padrão de correspondência -
-P
usa o pcre regex -
\|\K
lookbehind positivo para ver se|
está lá antes de nossa sequência ser extraída- semelhantemente,
(?=\|)
lookahead positivo para ver se há|
depois que nossa sequência a ser extraída
- semelhantemente,
-
[^|]+
string a ser extraída - basta negar|
e obter um ou mais desses caracteres -
sort -u
para obter valor exclusivo
Se você deseja preservar a ordem na qual essas sequências são encontradas:
$ grep -oP '\|\K[^|]+(?=\|)' ip.txt | awk '!seen[$0]++'
yoo
dummy
yes
wow
hub
lab
short
hello
good-guy
bad-girl
lol
a4-123
b4-124