我想用sed,
从perl脚本中删除\"
sed -ne '
#(here some substitutions...)
s/print "\(.*[^"]\)"/\1/p;
' | \
sed -e 's/\\"/"/g'
是否可以仅在\"
上用"
替换第一次替换的行?换句话说,将这个脚本放在一行中?
分支并不酷,因为如果未完成之前的替换,则该条件被视为真(但最新的替换尚未完成)...
EXEMPLE:
#! /usr/bin/perl
(...)
while (@someArray) {
print "la variable \"$_\" est cool!\n";
syslog ('info|machin', "la variable \"$_\" est cool!");
}
到
"la variable "$_" est cool!\n"
但
中没有可能的替代品 syslog ('info|machin', "la variable \"$_\" est cool!");
如果此行已被选中。
答案 0 :(得分:1)
sed -ne '
# if other substitution are to be made without regarding of s/print....
#(here some substitutions...)
s/print "\(.*[^"]\)"/\1/;
t bs
# if other substitution are to be made if /print... is NOT found
#(here some substitutions...)
b
: bs
# if other substitution are to be made if /print... is found
#(here some substitutions...)
s/\\"/"/g
p
'
在s//
之后,如果为真,则t
表示测试和转到标签(在这种情况下为bs
)。
所以在这里,替换,如果发生,转到bs
并进行其他替换而不是打印结果,如果不是,则转到结尾(b
没有标签跟随)
(由于对其他替代的不同解释,代码审查)