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

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

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

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

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

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

14 ответов

Я понял, как это сделать, и он работает на моем компьютере. Просто используйте этот код в своем .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
ответ дан 22 May 2018 в 23:56

Я понял, как это сделать, и он работает на моем компьютере. Просто используйте этот код в своем .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
ответ дан 18 July 2018 в 15:27

Я понял, как это сделать, и он работает на моем компьютере. Просто используйте этот код в своем .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
ответ дан 24 July 2018 в 20:38

Я понял, как это сделать, и он работает на моем компьютере. Просто используйте этот код в своем .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
ответ дан 31 July 2018 в 23:40

Чтобы заменить символы в переменной в оболочке bash, вы можете использовать расширение параметра

Пример. заменить каждое пространство символом плюса

$ var='some string    with spaces'
$ echo "${var// /+}"
some+string++++with+spaces

или заменить последовательности пробелов одним плюсом (при условии, что вы включили расширенное подглаживание в оболочке)

$ 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
$ 
4
ответ дан 22 May 2018 в 23:56
  • 1
    Всякий раз, когда я пытаюсь использовать это в моем .bash_profile, я получаю строку 82: неожиданный EOF при поиске соответствия `" ' – The Bean 6 April 2017 в 03:47
  • 2
    @TheBean покажет нам, что вы на самом деле положили в свой .bash_profile. – muru 6 April 2017 в 03:55
  • 3
    @muru Там ya go. – The Bean 6 April 2017 в 03:58

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

sed -i 's/ /+/g' filename
2
ответ дан 22 May 2018 в 23:56
  • 1
    Я не совсем уверен, как использовать это в контексте. Не могли бы вы добавить пример? – The Bean 6 April 2017 в 03:24
  • 2
    @TheBean вышеприведенная команда заменит все пробелы в вашем файле на «+». Это то, что вы хотите сделать, не так ли? – Yash Khosla 6 April 2017 в 03:26
  • 3
    Примером может служить echo $VAR | sed -i 's/ /+/g' ... Просьба привести пример, чтобы Yash Khola мог использовать это. – George Udosen 6 April 2017 в 03:28

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

sed -i 's/ /+/g' filename
2
ответ дан 18 July 2018 в 15:27

Чтобы заменить символы в переменной в оболочке bash, вы можете использовать расширение параметра

Пример. заменить каждое пространство символом плюса

$ var='some string with spaces' $ echo "${var// /+}" some+string++++with+spaces

или заменить последовательности пробелов одним плюсом (при условии, что вы включили расширенное подглаживание в оболочке)

$ 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 $
4
ответ дан 18 July 2018 в 15:27

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

sed -i 's/ /+/g' filename
2
ответ дан 24 July 2018 в 20:38
  • 1
    Я не совсем уверен, как использовать это в контексте. Не могли бы вы добавить пример? – The Bean 6 April 2017 в 03:24
  • 2
    @TheBean вышеприведенная команда заменит все пробелы в вашем файле на «+». Это то, что вы хотите сделать, не так ли? – Yash Khosla 6 April 2017 в 03:26
  • 3
    Примером может служить echo $VAR | sed -i 's/ /+/g' ... Просьба привести пример, чтобы Yash Khola мог использовать это. – George Udosen 6 April 2017 в 03:28

Чтобы заменить символы в переменной в оболочке bash, вы можете использовать расширение параметра

Пример. заменить каждое пространство символом плюса

$ var='some string with spaces' $ echo "${var// /+}" some+string++++with+spaces

или заменить последовательности пробелов одним плюсом (при условии, что вы включили расширенное подглаживание в оболочке)

$ 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 $
4
ответ дан 24 July 2018 в 20:38
  • 1
    Всякий раз, когда я пытаюсь использовать это в моем .bash_profile, я получаю строку 82: неожиданный EOF при поиске соответствия `& quot; ' – The Bean 6 April 2017 в 03:47
  • 2
    @TheBean покажет нам, что вы на самом деле положили в свой .bash_profile. – muru 6 April 2017 в 03:55
  • 3
    @muru Там ya go. – The Bean 6 April 2017 в 03:58

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

sed -i 's/ /+/g' filename
2
ответ дан 31 July 2018 в 23:40
  • 1
    Я не совсем уверен, как использовать это в контексте. Не могли бы вы добавить пример? – The Bean 6 April 2017 в 03:24
  • 2
    @TheBean вышеприведенная команда заменит все пробелы в вашем файле на «+». Это то, что вы хотите сделать, не так ли? – Yash Khosla 6 April 2017 в 03:26
  • 3
    Примером может служить echo $VAR | sed -i 's/ /+/g' ... Просьба привести пример, чтобы Yash Khola мог использовать это. – George Udosen 6 April 2017 в 03:28

Чтобы заменить символы в переменной в оболочке bash, вы можете использовать расширение параметра

Пример. заменить каждое пространство символом плюса

$ var='some string with spaces' $ echo "${var// /+}" some+string++++with+spaces

или заменить последовательности пробелов одним плюсом (при условии, что вы включили расширенное подглаживание в оболочке)

$ 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 $
4
ответ дан 31 July 2018 в 23:40
  • 1
    Всякий раз, когда я пытаюсь использовать это в моем .bash_profile, я получаю строку 82: неожиданный EOF при поиске соответствия `& quot; ' – The Bean 6 April 2017 в 03:47
  • 2
    @TheBean покажет нам, что вы на самом деле положили в свой .bash_profile. – muru 6 April 2017 в 03:55
  • 3
    @muru Там ya go. – The Bean 6 April 2017 в 03:58

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

sed -i 's/ /+/g' filename
2
ответ дан 5 August 2018 в 05:34

Чтобы заменить символы в переменной в оболочке bash, вы можете использовать расширение параметра

Пример. заменить каждое пространство символом плюса

$ var='some string    with spaces'
$ echo "${var// /+}"
some+string++++with+spaces

или заменить последовательности пробелов на один плюс (при условии, что вы включили расширенное подглаживание в оболочке)

$ 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
$ 
4
ответ дан 9 August 2018 в 03:07

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

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