Bash:最後のコマンドの単語のすべての出現を置き換えます


14

ほとんど間違えて、私はあなたが次のようなことができると考えました:

$ cp foo.data bar1.data
$ ^bar1^bar2

そして、それはのbar2.data代わりに同じコマンドを実行しbar1.dataます。では、ターゲットワードが複数ある場合はどうでしょうか?例えば:

$ cp foo.data bar.data
$ ^data^index

最初のdata拡張子のみを置き換えます。両方を置き換えるにはどうすればよいですか?

回答:


22

はと^data^index同等だと思う!!:s/data/indexので、最初の単語だけを置き換えます。行全体を置換したい場合は、使用する必要があると思います!!:gs/data/index/


この置換(:gs / data / index)はbash機能ですか、それとも別のプログラムを暗黙的に呼び出していますか?
JohnTortugo


7

末尾に^:&を追加することで実行できます。
^:&は2つのオカレンス
を置換します^:g&はすべてを置換します

$ cp foo.data bar.data
$ ^ data ^ index ^:&
$ cp foo.index bar.index
$ cp foo.data bar.data joe.data doe.data
$ ^ data ^ index ^:g&
$ cp foo.index bar.index joe.index doe.index

サイドノート:本「コマンドラインkungfu」
では、^:&がすべてを置き換えると書かれています


1
実際に^:&は、置換を2回行います。すべてのオカレンスを実行するには、使用します^:g&g「グローバル」の略)。
G-Manは「Reinstate Monica」と言います

Tnx!2回以上発生することをテストしませんでした。本のコマンドを読んでください。
注89
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.