Acho que ^data^index
é equivalente a !!:s/data/index
, por isso só substituirá a primeira palavra. Se você quiser toda a linha substituída, eu acho que você terá que usar !!:gs/data/index/
Quase por engano, descobri que você poderia fazer algo como:
$ cp foo.data bar1.data
$ ^bar1^bar2
E isso executa o mesmo comando com bar2.data
em vez de bar1.data
. Agora, e se eu tiver várias ocorrências da palavra de destino? Por exemplo:
$ cp foo.data bar.data
$ ^data^index
Substitui apenas a primeira extensão data
. Como faço para substituir os dois?
Você pode fazer isso adicionando ^: & até o fim.
^: & irá substituir duas ocorrências
^: g & irá substituir todos
$ 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
sidenote: no livro 'linha de comando kungfu', ele diz que ^: & irá substituir todos os
Tags command-line bash linux