Я пытаюсь сделать код, который ищет на Google от терминала путем вставки вещи в ссылку. Делает кто-либо знает, как заменить пробелы плюсами так, чтобы я мог вставить это в ссылку вместо исходного критерия поиска. Я думаю об использовании вещей команды как sed, хотя я не понимаю форматирование sed.
Я в настоящее время использую ниже:
search() {
read F1
a=$F1
b=https://www.google.com/#q=
c=$b$a
echo OPENING:
echo $c
open $c
}
Проблема состоит в том, что это требует плюсов вместо пробелов. Мне нужен способ заменить пробелы плюсами в переменная.
Я выяснил, как сделать это, и это работает над моим компьютером. Просто используйте этот код в своем .bash_profile.
search() {
clear
echo Type in your search term:
read F1
F=`echo "$F1" | sed "s/ /+/g"`
echo Opening: https://www.google.com/#q="$F"
open https://www.google.com/#q="$F"
}
Для замены символов в переменной в оболочке удара можно использовать расширение параметра
Напр. чтобы заменить каждое пространство плюс символ
$ var='some string with spaces'
$ echo "${var// /+}"
some+string++++with+spaces
или заменить последовательности пробелов с синглом плюс (если Вы включили расширенный globbing в оболочке)
$ echo "${var//+( )/+}"
some+string+with+spaces
, можно присвоить новой переменной newvar="${var//+( )/+}"
или повторно присвоиться для изменения значения переменной непосредственно, т.е.
$ var='some string with spaces'
$ echo "$var"
some string with spaces
$
$ var="${var//+( )/+}"
$ echo "$var"
some+string+with+spaces
<час> Вот иллюстрация его использования в контексте, описанном в обновленном вопросе:
Конструкция минимальное ~/.bash_profile
if [ -r $HOME/.profile ]; then
. $HOME/.profile
fi
search() {
read -p 'Please enter a search term: ' searchterm
c="https://www.google.com/#q=${searchterm//+( )/+}"
echo "OPENING: $c"
}
Затем запускает новую оболочку входа в систему и тестирует ее
$ bash -l
$ search
Please enter a search term: ask ubuntu
OPENING: https://www.google.com/#q=ask+ubuntu
$
Вы могли использовать эту команду:
sed -i 's/ /+/g' filename