【发布时间】:2019-03-04 12:35:51
【问题描述】:
情况 有一个名为 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
谢谢
【问题讨论】:
情况 有一个名为 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
谢谢
【问题讨论】:
使用 GNU grep:
grep -Po '^version=\K.*'
-P 启用 PCRE 正则表达式,-o 用于仅显示匹配的内容而不是整行,\K 元字符指定不显示前面的内容。
使用sed:
sed -n 's/^version=\(.*\)/\1/p'
-n 禁用自动打印,然后替换命令将通过捕获组仅替换 "version=[...]" 行的末尾。替换只对第二行有效,触发p 指令打印(转换后的)行。
【讨论】:
你可以使用:
grep version file | cut -d\= -f2
【讨论】:
=AFAIK,对于bash和cut都没有特殊意义