在Bash的所有比赛中^ ^词^replace^?
为了澄清,我正在寻找一种方法来执行全局search并replace上一个使用的命令。  ^word^replacement^似乎只能取代第一场比赛。 
 是否有一些set选项,让我难以置信? 
尝试这个:
 $ echo oneone oneone $ !!:gs/one/two/ # Repeats last command; substitutes 'one' --> 'two'. twotwo 
把我的答案和John Feminella的混在一起,你可以做到这一点,如果你想要一个别名:
 $alias dothis='`history -p "!?monkey?:gs/jpg/png/"`' $ls *.jpg monkey.jpg $dothis monkey.png 
!! 只有前面的命令,而!?string? 匹配包含“string”的最近的命令。
此解决scheme使用Bash子串replace:
 $ SENTENCE="1 word, 2 words";echo "${SENTENCE//word/replacement}" 1 replacement, 2 replacements 
注意使用双斜线表示“全局”stringreplace。
这个解决scheme可以在一行中执行。
以下是如何全局replace名为“myfile.txt”的文件中的string:
 $ sed -i -e "s/word/replacement/g" myfile.txt 
一个讨厌的方法来解决这个问题可能是这样的:
 想要通过交换L'A for A来回应BAABAA而不是BLABLA 
 $ echo "BLABLA" BLABLA $ `echo "!!" | sed 's/L/A/g'` $(echo "echo "BLABLA" " | sed 's/L/A/g') BAABAA $ 
不幸的是,这种技术似乎不能在函数或别名中工作。
我在SUSE 10.1上testing它。 “^字^replace^”不起作用,而“^字^replace”起作用。 举个例子:
 linux-geek:/home/Myworks # ls /etc/ld.so.conf /etc/ld.so.conf linux-geek:/home/Myworks # ^ls^cat cat /etc/ld.so.conf /usr/X11R6/lib/Xaw3d /usr/X11R6/lib /usr/i486-linux-libc5/lib=libc5 /usr/i386-suse-linux/lib /usr/local/lib /opt/kde3/lib /opt/gnome/lib include /etc/ld.so.conf.d/*.conf linux-geek:/home/Myworks #