【发布时间】:2013-12-13 10:35:57
【问题描述】:
让我解释一下我所面临的情况:我有一个 perl 文件,其中包括创建另一个进程使用的“标题”字符串。这在 perl 脚本 (script.pl) 中定义为:
$str = "START\n" .
"PARAM1=blah\n" .
"PARAM2=blah2\n" .
"PARAM3=blah3\n";
等
我需要通过从 bash 脚本中附加更多值来修改 $str 的值,所以我想我会使用 sed。这是我目前所拥有的:
str_new="\"NEWPARAM1=blah\" .\n\"NEWPARAM2=blah2\" .\n";
sed -i "/START/{n;s/^/$str_new/}" script.pl
这种作品,我得到的是:
$str = "START\n" .
"NEWPARAM1=blah" .
"NEWPARAM2=blah2" .
"PARAM1=blah\n" .
"PARAM2=blah2\n" .
"PARAM3=blah3\n";
但是,我需要的是在我添加的新参数之后出现的文字 '\n':
$str = "START\n" .
"NEWPARAM1=blah\n" .
"NEWPARAM2=blah2\n" .
"PARAM1=blah\n" .
"PARAM2=blah2\n" .
"PARAM3=blah3\n";
我尝试在 sed 替换子句中使用 '\n', \n 但没有运气。任何帮助将不胜感激
【问题讨论】:
-
这是什么语言?这不是
sh或bash。 -
抱歉,我在 bash 脚本中使用了这个
-
是的,我得到的是 $str = "START\n" 。 “NEWPARAM1=废话”。 “NEWPARAM2=blah2”。等如果格式混乱,它所做的就是将 \\n 解释为另一个换行符,因此它在 blah 之后添加一个换行符,然后在 '.' 之后添加另一个换行符
-
在 Perl 中完成所有事情不是更容易吗?
标签: regex bash replace sed newline