Respostas:
Você pode usar a !!:gs/search/replace/
notação para fazer o que quiser. Isso utiliza a pesquisa global & replace ( :gs
):
antes
$ echo "harm warm swarm barm"
harm warm swarm barm
depois de
$ !!:gs/arm/orn/
echo "horn worn sworn born"
horn worn sworn born
[subhrcho@slc04lyo pcbpel]$ echo "hat that bat" hat that bat [subhrcho@slc04lyo pcbpel]$ !!:gs/at/xx/ echo "hxx that bat" hxx that bat
. o que estou perdendo?
bash --version
= 4.2.45 (1) - liberação.
Eu não acredito que há uma maneira fácil de adicionar algo a ^string1^string2
fazer bash
substituir todas as ocorrências. Como slm aponta, você deve escrever !!:gs/string1/string1
.
Mas zsh
, basta adicionar :G
:
$ echo foo foo
foo foo
$ ^foo^bar^:G
echo bar bar
bar bar
Nos dois bash
e zsh
, você também pode usar fc -s
assim:
$ echo foo foo
foo foo
$ fc -s foo=bar
echo bar bar
bar bar
Isso geralmente é transformado em um alias chamado r
para que você possa fazer:
$ echo foo foo
foo foo
$ r foo=bar
echo bar bar
bar bar
Eu acredito que a melhor opção é usar ": &"
$ echo "dog cat dog"
$ ^dog^cat^:&
echo "cat cat cat"
cat cat cat
:&
houver mais ocorrências para substituir.
command-history
tag para isso. Adicionado. Além disso, suponho que você esteja se referindo aobash
shell?