在bash中匹配单词之后的一行中打印特定字符串

时间:2018-09-28 13:33:34

标签: regex bash grep cat

情况 有一个名为test的文件,包含以下文本:

this is the first line
version=1.2.3.4
this is the third line

我如何仅通过bash打印:

1.2.3.4

注意:我要一直打印到"version="之后的行尾,而不要搜索1.2.3.4 谢谢

2 个答案:

答案 0 :(得分:1)

使用GNU grep

grep -Po '^version=\K.*'

-P启用PCRE正则表达式,-o仅用于显示匹配的内容,而不是整行,而\K元字符指定不显示前面的内容。

使用sed

sed -n 's/^version=\(.*\)/\1/p'

-n禁用自动打印,然后替换命令将仅通过捕获组的一端替换“ version = [...]”行。替换仅在第二行有效,第二行触发p指令以打印(已转换的)行。

答案 1 :(得分:1)

您可以使用:

grep version file | cut -d\= -f2