我有一个文件file.txt
c-hcos-49.84.202106221
c-hcos-4.4.9-open
c-hcos-4.9.9-open
我想 grep 包含string49
或紧随其后的行。4.9
hcos-
我用了
cat file.txt| grep 'hcos' | grep '4\\.9\\|49'
它显示输出中的所有行实际输出
c-hcos-49.56.202106221
c-hcos-4.4.9-open
c-hcos-4.9.9-open
预期输出是
c-hcos-49.84.202106221
c-hcos-4.9.9-open
答案1
就您而言,您希望查找包含字符串49.
或紧随其后的所有行。为此,请使用4.9.
hcos-
grep -E 'hcos-4\.?9\.' file.txt
其中该-E
选项指示grep
使用扩展正则表达式语法。在基本的正则表达式语法中,这可以通过以下方式实现:
grep 'hcos-4\.\{0,1\}9\.' file.txt
您不需要将cat
文件放入,grep
因为grep
可以自行打开文件。
答案2
解决这个问题的一般方法是使用交替:
grep 'hcos-\(4\.9\|49\)' file.txt
(带有可选“.”的解决方案仅适用于这种特定情况)。