如何提取包含子字符串的整个单词?

Dis*_*ame 7 command-line text-processing

如果我有一个看起来像这样的文件:

example.png example.jpg example2.jpg example2.png example.swf
example2.swf example3.jpg example4.jpg example3.png example3.swf 
Run Code Online (Sandbox Code Playgroud)

例如,我想提取包含 swf 的单词,输出看起来像这样

example.swf 
example2.swf
example3.swf
Run Code Online (Sandbox Code Playgroud)

我试过grep -o "swf[^[:space:]]*",它只打印一堆swf,然后我试过grep -o '[^ ]*a\.swf[^ ]*',输出很少线包含“SWF”。有谁知道该怎么做?

Cyr*_*rus 10

使用 GNU grep:

grep -o '\b\w*\.swf\b' file
Run Code Online (Sandbox Code Playgroud)

输出:

例子.swf
例子2.swf
例子3.swf

\b: 零宽度字边界

\w: 字字

\.: 匹配一个点


请参阅:堆栈溢出正则表达式常见问题解答


hee*_*ayl 5

你可以做:

grep -o '[^ ]*\.swf' file.txt
Run Code Online (Sandbox Code Playgroud)
  • [^ ]* 匹配零个或多个非空格字符

  • \.swf 匹配文字 .swf

例子:

% grep -o '[^ ]*\.swf' file.txt
example.swf
example2.swf
example3.swf
Run Code Online (Sandbox Code Playgroud)


nco*_*ers 4

第一步

使用以下命令将空格替换为行尾sed

第二步

使用过滤输出grep

例子

sed -e s/\ /\\n/g file | grep .swf