Com entrada file.txt
:
Sample-pattern="abc"
Sample2-pattern="xyz"
Sample3pattern="def"
O script sed
a seguir produzirá esta saída:
$ sed -E -n -e '/-pattern/ s/^([^-]*)-[^=]*="([^"]*)"/ /p' file.txt
Sample abc
Sample2 xyz
O script sed
acima imprime todo o texto antes do primeiro caractere -
em uma linha E todo o texto entre aspas duplas após o primeiro caractere =
em uma linha. Ele não imprime linhas que não correspondem às expressões regulares (as duas - a especificação de endereço /-pattern/
e a pesquisa e substituição s///
).
NOTA: Ele usa a opção -E
de sed
para ativar expressões regulares estendidas. Isso funciona com GNU, * BSD, Mac OS X e algumas outras versões de sed
.... é melhor usar -E
do que a opção -r
do GNU-ish que faz a mesma coisa, mas não é implementada na versão do Mac OS X de sed
. -E
provavelmente se tornará um padrão POSIX em um futuro não muito distante.
uma versão de expressão regular básica seria:
sed -n -e '/-pattern/ s/^\([^-]*\)-[^=]*="\([^"]*\)"/ /p'