Com o GNU grep:
grep -o '\b\w*\.swf\b' file
Saída:
example.swf example2.swf example3.swf
\b
: a zero-width word boundary
\w
: word character
\.
: match one dot
Veja: Perguntas frequentes sobre expressões regulares de estouro de pilha
Se eu tiver um arquivo assim:
example.png example.jpg example2.jpg example2.png example.swf
example2.swf example3.jpg example4.jpg example3.png example3.swf
e eu quero extrair as palavras contendo swf por exemplo, a saída seria algo como isto
example.swf
example2.swf
example3.swf
Eu tentei grep -o "swf[^[:space:]]*"
, que imprime apenas um monte de swf
, e então eu tentei grep -o '[^ ]*a\.swf[^ ]*'
, que produziu muito poucas linhas contendo "swf". Alguém sabe o que fazer?
Com o GNU grep:
grep -o '\b\w*\.swf\b' file
Saída:
example.swf example2.swf example3.swf
\b
: a zero-width word boundary
\w
: word character
\.
: match one dot
Veja: Perguntas frequentes sobre expressões regulares de estouro de pilha
Você pode fazer:
grep -o '[^ ]*\.swf' file.txt
[^ ]*
corresponde a zero ou mais caracteres não espaciais
\.swf
corresponde ao literal .swf
Exemplo:
% grep -o '[^ ]*\.swf' file.txt
example.swf
example2.swf
example3.swf
Primeiro passo
Substitua espaços por extremidades de linha usando sed
Segundo passo
Filtre a saída usando grep
Exemplo
sed -e s/\ /\n/g file | grep .swf