Replacing Characters With Other Characters

I am attempting to make a code that searches on google from terminal by inserting thing into the link. Does anybody know how to replace spaces with pluses so that I can insert that into the link instead of the original search term. I am thinking of using things commands like sed, although I don't understand the formatting of sed.

I am currently using the below:

search() { read F1 a=$F1 b= c=$b$a echo OPENING: echo $c open $c } 

The problem is that this requires pluses instead of spaces. I need a way to replace spaces with pluses in the a variable.

11

3 Answers

To replace characters in a variable in the bash shell, you can use parameter expansion

Ex. to replace each space with a plus character

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

or to replace sequences of spaces with a single plus (provided you have enabled extended globbing in the shell)

$ echo "${var//+( )/+}" some+string+with+spaces 

You can assign to a new variable newvar="${var//+( )/+}" or reassign to change the value of the variable directly i.e.

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

Here's an illustration of its use in the context described in your updated question:

Construct a minimal ~/.bash_profile

if [ -r $HOME/.profile ]; then . $HOME/.profile fi search() { read -p 'Please enter a search term: ' searchterm c="( )/+}" echo "OPENING: $c" } 

Then start a new login shell and test it

$ bash -l $ search Please enter a search term: ask ubuntu OPENING: $ 
3

You could use this command:

sed -i 's/ /+/g' filename 
3

I figured out how to do this and it works on my computer. Just use this code in your .bash_profile.

search() { clear echo Type in your search term: read F1 F=`echo "$F1" | sed "s/ /+/g"` echo Opening: "$F" open "$F" } 

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like