sed-如何替换行中的第一个单词并保留缩进?

sed-如何替换行中的第一个单词并保留缩进?,sed,Sed,对于所有具有.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 目前我

对于所有具有
.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表达式#1,char 28:unterminated
s'命令` 从中

如何解决我还没有看到的错误,并在进行此类替换时“保留”空格

如果您可以排除具有}.to而不是[除“}”以外的任何字符]to的行,将获得额外的奖励

n、 b.我单独处理结帐事宜

p、 您的前导空格消失了,因为您选择不保留它们。您可以说:

sed '/.to/ s/^\([[:space:]]*\)/\1expect(/' filename
sed '/\.to/ s/\(\S\)/expect(\1/' filename

或者,你可以说:

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
你的前导空格消失了,因为你选择不保留它们。你可以说:

sed '/.to/ s/^\([[:space:]]*\)/\1expect(/' filename
sed '/\.to/ s/\(\S\)/expect(\1/' filename

或者,你可以说:

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
这可能适用于您(GNU-sed):

这可能适用于您(GNU-sed):


对我来说没有问题。只需将
[[:space]]
更改为
[[:space:]]
。嗯,dns显示U&L在其他站点上升时对我来说仍然下降。对我来说没有问题。只需将
[:space]
更改为
[:space:]
。嗯,dns显示U&L在其他站点上升时对我来说仍然下降。