^ word ^ replacement ^ во всех совпадениях в Bash? - программирование
Подтвердить что ты не робот

^ word ^ replacement ^ во всех совпадениях в Bash?

Чтобы уточнить, я ищу способ выполнить глобальный поиск и заменить его на предыдущую используемую команду. ^word^replacement^ только кажется заменой первого совпадения.

Есть ли опция set, которая ускользает от меня?

4b9b3361

Ответ 1

Попробуйте следующее:

$ echo oneone
oneone
$ !!:gs/one/two/    # Repeats last command; substitutes 'one' --> 'two'.
twotwo

Ответ 3

В этом решении используется Bash Замена подстановки:

$ SENTENCE="1 word, 2 words";echo "${SENTENCE//word/replacement}"
1 replacement, 2 replacements

Обратите внимание, что использование двойных косых черт означает "глобальную" замену строк.

Это решение может быть выполнено в одной строке.

Здесь, как глобально заменить строку в файле с именем "myfile.txt":

$ sed -i -e "s/word/replacement/g" myfile.txt

Ответ 4

Отвратительный способ обойти это может быть примерно так:

Хотите эхо BAABAA, а не BLABLA, заменив L на A

$ echo "BLABLA"   
BLABLA
$ `echo "!!" | sed 's/L/A/g'`
$(echo "echo "BLABLA" " | sed 's/L/A/g')
BAABAA
$

К сожалению, этот метод не работает в функциях или псевдонимах.

Ответ 5

Я тестирую его на SUSE 10.1. "^ word ^ replacement ^" не работает, а "^ word ^ replacement" работает хорошо. для экземпляра:

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 #