1

对于.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从中得到了命令

如何解决我还没有看到的错误以及在进行这种替换时“保留”空格。

如果您可以排除具有 }.to 而不是 [除 '}' 之外的任何字符].to 的行,将获得额外的赞赏

nb 我分别处理关闭括号。

ps unix 站点现在关闭。

4

2 回答 2

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 而不是 [除 '}' 之外的任何字符].to 的行,则额外感谢

如果我理解正确,您想说:

sed '/[^}]\.to/ s/\(\S\)/expect(\1/' filename
于 2013-11-06T15:53:08.913 回答
1

这可能对您有用(GNU sed):

sed 's/\S\+\.to/expect(&/' file
于 2013-11-07T11:07:03.720 回答