使用仅部分匹配的SED替换整行中的整个单词/数字

时间:2014-01-22 22:19:07

标签: shell unix sed

有人可以告诉我如何只用部分替换整个字符串? 例如,如果txt文件包含:

The number of water molecues: h20=20e43

我需要它说:

The number of water molecues: h20=10e54

到目前为止我所拥有的是sed 's/h20/h20=10e54/',其输出:

The number of water molecues: h20=10e54=20e43

问题是我想要替换的原始值并不总是相同,所以我需要它来搜索模式h20=并替换整个事物。

3 个答案:

答案 0 :(得分:1)

尝试:s/\(h20=\)[[:alnum:]]*/\110e54/

匹配“h20 =”(并记住该值),后跟一些字母数字字符;替换为记住的值(\1)加上您想要的文字字符串。

另外:perl -pe 's/h20=\K\w+/10e54/'

答案 1 :(得分:0)

按照你自己的想法,这是修复。

echo "The number of water molecues: h20=10e54" |sed 's/h20=.*/h20=10e54/'

答案 2 :(得分:0)

awk也可以使用:

echo "The number of water molecues: h20=20e43" | awk '{sub(/h20=.*/,"h20=10e54")}1'
The number of water molecues: h20=10e54