如何在bash中的字符串之间添加字符?

时间:2019-01-25 06:55:09

标签: awk sed

告诉我如何使用sed命令添加它。

[修订前]

BONDING_OPTS="mode=1 miimon=200 primary=ens192" 

[修订后]

BONDING_OPTS="mode=1 miimon=200 primary=ens192 primary=eth0"

到目前为止我已经成功了。

sed "/BOND/s/$/primary=eth0/g" /etc/sysconfig/network-scripts/ifcfg-bond0

输出:

BONDING_OPTS="mode=1 miimon=200 primary=ens192"primary=eth0

2 个答案:

答案 0 :(得分:1)

感谢您在文章中做出的努力。您能不能试一下。

awk '/BOND/{sub(/\"$/,"  primary=eth0&")} 1' Input_file

如果要将输出保存到Input_file本身,请尝试:

awk '/BOND/{sub(/\"$/,"  primary=eth0&")} 1' Input_file > temp && mv temp Input_file

使用sed

sed '/BOND/s/\"$/  primary=eth0&/'  Input_file

请使用sed -i(将输出保存到Input_file本身)或使用sed -i.bak(将输出保存到Input_file本身,以备份现有Input_file)。

答案 1 :(得分:1)

sed '/BOND/s/"$/ primary=eth0"/'
  • 使用单引号,双引号内的字符串在传递给sed之前要经过shell解释,这经常会导致错误
  • 由于您需要在行尾插入一些内容,因此需要在应用$锚点之前添加该条件-在这种情况下为"

如果在锚点之前有非平凡的字符串或正则表达式,则可以使用&在替换部分中取回匹配的字符串,而不必复制文本

sed '/BOND/s/"$/ primary=eth0&/' ip.txt

有关就地编辑的信息,请参见sed in-place flag that works both on Mac (BSD) and Linux