Bash: Substitua todas as ocorrências de uma palavra no último comando

14

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?

    
por Belmin Fernandez 09.03.2011 / 15:35

2 respostas

21

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/

    
por 09.03.2011 / 15:46
7

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

    
por 14.07.2015 / 18:28