使用“grep”搜索两个替代版本号

使用“grep”搜索两个替代版本号

我有一个文件file.txt

c-hcos-49.84.202106221
c-hcos-4.4.9-open
c-hcos-4.9.9-open

我想 grep 包含string49或紧随其后的行。4.9hcos-

我用了

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

(带有可选“.”的解决方案仅适用于这种特定情况)。

相关内容