Замена символов с другими символами

Я пытаюсь сделать код, который ищет на Google от терминала путем вставки вещи в ссылку. Делает кто-либо знает, как заменить пробелы плюсами так, чтобы я мог вставить это в ссылку вместо исходного критерия поиска. Я думаю об использовании вещей команды как sed, хотя я не понимаю форматирование sed.

Я в настоящее время использую ниже:

search() {
read F1
a=$F1
b=https://www.google.com/#q=
c=$b$a
echo OPENING:
echo $c
open $c
}

Проблема состоит в том, что это требует плюсов вместо пробелов. Мне нужен способ заменить пробелы плюсами в переменная.

2
задан 7 April 2017 в 06:00

3 ответа

Я выяснил, как сделать это, и это работает над моим компьютером. Просто используйте этот код в своем .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"
}
0
ответ дан 2 December 2019 в 01:32

Для замены символов в переменной в оболочке удара можно использовать расширение параметра

Напр. чтобы заменить каждое пространство плюс символ

$ 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
$ 
6
ответ дан 2 December 2019 в 01:32

Вы могли использовать эту команду:

sed -i 's/ /+/g' filename
2
ответ дан 2 December 2019 в 01:32

Другие вопросы по тегам:

Похожие вопросы: