Substituindo Caracteres por Outros Caracteres

0

Eu estou tentando fazer um código que pesquisa no Google a partir do terminal inserindo algo no link. Alguém sabe como substituir espaços com vantagens, para que eu possa inserir isso no link em vez do termo de pesquisa original. Estou pensando em usar comandos de coisas como sed, embora eu não entenda a formatação do sed.

Atualmente, estou usando o abaixo:

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

O problema é que isso requer vantagens em vez de espaços. Eu preciso de uma maneira de substituir espaços com vantagens na variável.

    
por The Bean 06.04.2017 / 02:17

3 respostas

0

Eu descobri como fazer isso e funciona no meu computador. Basta usar este código no seu .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"
}
    
por The Bean 07.04.2017 / 12:32
4

Para substituir caracteres em uma variável no bash shell , você pode usar expansão de parâmetro

para substituir cada espaço por um caractere mais

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

ou para substituir sequências de espaços por um único sinal de adição (desde que você tenha habilitado a globalização estendida no shell)

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

Você pode atribuir a uma nova variável newvar="${var//+( )/+}" ou reatribuir para alterar diretamente o valor da variável, ou seja,

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

Veja uma ilustração de seu uso no contexto descrito em sua pergunta atualizada:

Construa um mínimo ~/.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"
}

Em seguida, inicie um novo shell de login e teste-o

$ bash -l
$ search
Please enter a search term: ask   ubuntu
OPENING: https://www.google.com/#q=ask+ubuntu
$ 
    
por steeldriver 06.04.2017 / 02:29
2

Você poderia usar este comando:

sed -i 's/ /+/g' filename
    
por Yash Khosla 06.04.2017 / 02:22