^ word ^ replacement ^ во всех совпадениях в Bash? Чтобы уточнить, я ищу способ выполнить глобальный поиск и заменить его на предыдущую используемую команду. ^word^replacement^ только кажется заменой первого совпадения. Есть ли опция set, которая ускользает от меня? Ответ 1 Попробуйте следующее: $ echo oneone oneone $ !!:gs/one/two/ # Repeats last command; substitutes 'one' --> 'two'. twotwo Ответ 2 Смешивая мой ответ The!! только предыдущая команда, а?? string? соответствует самой последней команде, содержащей "string". Ответ 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 #
Ответ 1 Попробуйте следующее: $ echo oneone oneone $ !!:gs/one/two/ # Repeats last command; substitutes 'one' --> 'two'. twotwo
Ответ 2 Смешивая мой ответ The!! только предыдущая команда, а?? string? соответствует самой последней команде, содержащей "string".
Ответ 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 #