用Bash替换文本

时间:2013-04-09 09:11:16

标签: string bash replace

我有两个变量:

varString = abcd
varNumber = 12345

我想在名为textFile.txt的文件中找到varString字符串。 该行看起来像:

abcd:11111:blah:00000:blah

所有字段的长度都未知。

我想找到abcd行,并将11111位更改为varNumber 12345,然后文件中的行将是:

abcd:12345:blah:00000:blah

任何帮助?

2 个答案:

答案 0 :(得分:1)

这样的事情会:

sed -e "s/\($varString\):\([0-9]*\):/\1:$varNumber:/g" textFile.txt

它将$varString:<digits>:之类的字符串替换为$varString:$varNumber:。输出在stdout。要进行就地编辑,请将-i '~'选项提供给sed

答案 1 :(得分:0)

使用awk

awk -F: -v OFS=: -v varString=abcd -v varNumber=12345 '{if($1==varString)$2=varNumber;print}' file