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

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

如果我有一个如下所示的文件:

example.png example.jpg example2.jpg example2.png example.swf
example2.swf example3.jpg example4.jpg example3.png example3.swf 

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

example.swf 
example2.swf
example3.swf

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

答案1

使用 GNU grep:

grep -o '\b\w*\.swf\b' file

输出:

示例.swf
示例2.swf
示例3.swf

\b:零宽度字边界

\w: 单词字符

\.: 匹配一个点


看:Stack Overflow 正则表达式常见问题解答

答案2

你可以做:

grep -o '[^ ]*\.swf' file.txt
  • [^ ]*匹配零个或多个非空格字符

  • \.swf匹配字面意思.swf

例子:

% grep -o '[^ ]*\.swf' file.txt
example.swf
example2.swf
example3.swf

答案3

第一步

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

第二步

使用过滤输出grep

例子

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

相关内容