我的ini文件看起来像:
...
abc = 123
def = 456
...
我想将其更改为:
...
abc = 123
xyz = 987
def = 456
...
我已经不成功地尝试了这个:
sed -i 's/abc = 123\ndef = 456/abc = 123\nxyz = 987\ndef = 456/g' myfile.ini
如何解决对sed
的调用以使其正常工作?
答案 0 :(得分:2)
Workbooks.Open Filename:=
答案 1 :(得分:2)
sed的另一种方法:
sed '/abc = 123/N;s/\ndef = 456/\nxyz = 987&/' myfile.ini
答案 2 :(得分:0)
Sed自然只会查看一行,因此无法找到'\n'
字符。最简单的解决方案是将所有'\n'
替换为另一个临时字符,例如' \ f' (换页符)。
这是我一直在使用的hackish方法。 (为清楚起见,分开)
cat myfile.ini |
tr '\n' '\f' |
sed -e "s/abc = 123\fdef = 456/abc = 123\fxyz = 987\fdef = 456/g" |
tr '\f' '\n'
'\f'
是换页符。如果您使用的是MacOS,则需要在sed语句中将所有'\f'
替换为$(printf '\f')
。
注意:我还建议使用sed分组语法使您的模式更易于阅读。
用sed进行多行编辑很难。您应该查看perl以进行更复杂的编辑。
答案 3 :(得分:0)
这是一种在模式后附加一行的便携方法:
<myfile.ini sed '/abc = 123/a\
xyz = 789
'
输出:
abc = 123
xyz = 789
def = 456