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'