在文档中只匹配一行,然后在Ubuntu上使用bash替换该行中的数字

时间:2016-07-27 19:38:35

标签: regex bash ubuntu sed nested

我有一个带有内容的文件'lines.txt':

SomeLine=string
PeopleCharms=007
OtherLine=667
PeopleCount=19
MoreLines%=0
AndYetMore%=34HG711

在Ubuntu 14.04上使用名为'change.sh'的bash脚本我想用行“PeopleCount =”中的“19”替换另一个我作为变量的数字。

互联网:-)表明

sed -i '/^PeopleCount/ s/\d+/$var/g' lines.txt

应该做的伎俩。但事实并非如此。我也试过Expresso来看看我能上班的东西,但当然这些工具并不够聪明,无法预测我想要的东西...... (并且只是为了确保变量不是问题,我还使用静态数字来查看它是否有效)

可以在一个正则表达式中完成吗?非常感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

很少有工具会将[0-9]识别为代表数字(因此必要时使用sed -i 's/^\(PeopleCount=\).*/\1'"$var"'/' lines.txt )并且shell不会在单引号内扩展变量。试试这个:

{{1}}