如果我有一个如下所示的文件:
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
: 单词字符
\.
: 匹配一个点
答案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