对于.to
的所有行,我想在开头添加expect(
。
例如
blob.to 20
leave me
Thing.to(30)
Other.to {all}
leave me tooo
far_in.to stuff
我想看看:
expect(blob.to 20
leave me
expect(Thing.to(30)
expect(Other.to {all}
leave me tooo
expect(far_in.to stuff
目前我有:
sed -i '/.to/s/^[[:space]]*/expect(/' ../_spec_seded/"$file"
但我正在获得sed: -e expression #1, char 28: unterminated
s'命令
从它
如何解决我尚未看到的错误,并在进行此类替换时“保留”空格。
如果你能排除有}。而不是[除了'}'之外的任何字符的行
,那么可以获得奖励。n.b。我处理单独关闭parens。
P.S。 unix网站现在下来。
答案 0 :(得分:4)
您的前导空格消失因为您选择不保留那些。你可以说:
sed '/.to/ s/^\([[:space:]]*\)/\1expect(/' filename
或者,您可以说:
sed '/\.to/ s/\(\S\)/expect(\1/' filename
对于您的输入,结果是:
expect(blob.to 20
leave me
expect(Thing.to(30)
expect(Other.to {all}
leave me tooo
expect(far_in.to stuff
如果您可以排除有.to而不是。的行,则可以获得奖励 [除了'}'之外的任何字符。]到
如果我理解正确,你想说:
sed '/[^}]\.to/ s/\(\S\)/expect(\1/' filename
答案 1 :(得分:1)
这可能适合你(GNU sed):
sed 's/\S\+\.to/expect(&/' file