使用sed Unix在特定字符串后添加字符串

时间:2016-01-29 19:35:05

标签: unix sed

我在这样的文件中有一个字符串:

"Value1=[random number]"

在这个字符串之后,我想添加另一个字符串,特别是:

"Value2=100"

如果我尝试使用:

sed  '/Value1=/a Value2=100' myfile.txt

它会失败,因为我没有包括Value1 = [某个随机数]的事实。

如何添加Value1 =随机数和Value2应添加到此字符串的条件?

3 个答案:

答案 0 :(得分:1)

sed  '/Value1=[0-9]\+/a Value2=100' myfile.txt

[0-9]\+将匹配任何数字字符串。例如,在我的cygwin上,GNU sed 4.2.2,

echo Value1=42 | sed '/Value1=[0-9]\+/a Value2=43'

产生

Value1=42
Value2=43

修改:如果该号码可能是或不是双引号,请使用:

 sed '/Value1="\?[0-9]\+"\?/a Value2=43'

"\?是可选的双引号。

答案 1 :(得分:1)

这样的事情:

$ sed 's,\(Value1=200\),\1 Value2=100,' myfile.txt

结果:

Value1=200 Value2=100

答案 2 :(得分:1)

echo '"Value1=400"' | sed 's/"Value1=.*"/&\n"Value2=100"/'

输出:

"Value1=400"
"Value2=100"

或者:

echo '"Value1=400"' | sed 's/"Value1=.*"/& "Value2=100"/'

输出:

"Value1=400" "Value2=100"