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しかし、それから s' command` を取得しています

この種の置換を行うときに、まだ表示されていないエラーを解決し、スペースを「保存」するにはどうすればよいですか。

['}' 以外の任意の文字].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 に答える