Aprenda Linux

Substituindo String no Bash

Substituindo String no Bash

Bash é um processo de comando compatível com o shell do UNIX, cuja principal tarefa é manipular strings conduzidas em um ambiente de shell. Os programadores às vezes são chamados para trabalhar em arquivos diferentes. Eles podem adicionar, excluir e substituir partes ou o arquivo inteiro para ajustar seu trabalho. Isso requer o conhecimento de substituição de string no bash. O armazenamento de dados pode ser temporário ou permanente, dependendo da natureza dos dados. A string do arquivo é essencial ao substituir o conteúdo do arquivo.

Substituindo String no Bash

sed é vital e é útil para ajudar na substituição de strings em um arquivo por scripts bash. O editor de string pode ser usado de diferentes maneiras para substituir o conteúdo do arquivo no bash. Um editor de string alternativo, mas de som, é o awk que pode ser usado ao substituir o valor da string de um arquivo usando o bash. Este artigo irá mostrar com a ajuda de exemplos como o conteúdo do arquivo pode ser substituído no bash. Observe que o conhecimento em padrões regex também pode ser de grande valor ao substituir string em bash.

Manipulação Bash String

Ao fazer substituições menores ou simples, o sed não é necessário. Bash pode fazer a manipulação.

Por exemplo:
Ao substituir um fosslinux.gif com .mp4, sed não é necessário.
Para executar o processo usando o bash, use o texto codificado abaixo:

# / bin / bash file_name = "fosslinux.gif "new_extension =" mp4 "# Substituir .gif com .mp4 generated_file_name = $ file_name /.gif /.$ new_extension echo generated_file_name

Substituindo String usando sed

sed pode ser referido como um editor de fluxo. Sed pode substituir uma string em arquivos. Vejamos um exemplo de um arquivo chamado singleboardbytes.txt que contém as seguintes informações:
Foss Linux é um ótimo site de aprendizagem para qualquer usuário Linux. Confira os artigos publicados pela Foss Linux em seu site.

Agora, em nosso arquivo, precisamos substituir a palavra “local" com "local na rede Internet”E renomeie o arquivo para fosslinux.TXT.

Compreendendo a sintaxe sed

sed -i 's / search_string / replace_string /' nome do arquivo sed - é o comando usado na execução da sintaxe acima '-eu'- usado na modificação de conteúdo no arquivo original com um auxílio de string de substituição sempre que o valor de pesquisa existir no arquivo. 's'- este é o comando substituto'seqüência de pesquisa'- representa o valor da string que deve ser procurado para substituição no arquivo original'substituir_string'- representa o valor da string que é usado para substituir o valor pesquisado. A string deve corresponder à string encontrada pelo comando 'search_string'. 'nome do arquivo'- este é o nome do arquivo pelo qual a substituição será aplicada.

Execute o seguinte comando em seu terminal:

sed 's / site / website / g' singleboardbytes.txt> fosslinux.TXT

Substituição de cordas usando sed

Nota: você também pode executar o comando acima, colocando-o como um script bash.
Substituindo usando o -eu comando

Depois de executar o comando, a próxima etapa é substituir usando o -eu comando. -eu é uma representação de "no local", o que significa que o arquivo é apenas substituído e não há criação de arquivos extras. Usando nosso exemplo acima, execute o seguinte comando:

sed -i 's / site / website / g' singleboardbytes.TXT

Substituindo usando o comando -i

Na figura abaixo, você pode ver um ponto de exclamação que diz: O arquivo “/ home / tuts / singleboardbytes.txt alterado no disco.”Isso mostra que as mudanças foram feitas com sucesso.

Alterações feitas em singleboardbytes.TXT

A figura abaixo é o arquivo contendo as alterações feitas na etapa anterior, tanto no nome do arquivo (singleboardbytes.txt para fosslinux.txt) e a palavra local foi alterado para o local na rede Internet.

Mudança final após executar o comando sed

Usando uma variável como valores de pesquisa e substituições

Com um pouco de interpolação, as variáveis ​​podem ser usadas para fazer a substituição de strings. O primeiro argumento sed, neste caso, deve usar aspas duplas em vez de aspas simples. Por exemplo, seu código será semelhante ao seguinte:

tuts () local search = $ 1 local replace = $ 2 # Observe as aspas duplas sed -i "s / $ search / $ replace / g" singleboardbytes.TXT 

Usando uma variável como valores de pesquisa e substituições

sed tem dois sabores, a saber: o FreeBSD e a Linux sed. As distros Linux usam o Linux sed enquanto os usuários do OS X usam o FreeBSD sed. Esses sabores são bastante diferentes e, portanto, não se pode transferir comandos de um sabor sed para outro.

Por exemplo, ao substituir o conteúdo do arquivo usando o FreeBSD, um backup deve ser realizado usando o .extensão Bak. Ou você pode iniciar um backup com o uso de pares vazios de aspas imediatamente após a notação -i, conforme mostrado na sintaxe bash abaixo:

tuts () local search = $ 1 local replace = $ 2 sed -i "" "s / $ search / $ replace / g" singleboardbytes.TXT 

Se um backup não for feito durante o uso do FreeBSD conforme ilustrado no código de sintaxe acima, você irá cometer um erro como o mostrado abaixo:

sed: 1: "/ Usuários / usuário / caminho / tuts…": caracteres extras no final do comando h

Como substituir um arquivo e combinar o padrão de dígitos usando o comando sed

Se você executar o script com sucesso, uma pesquisa por todo o conteúdo numérico presente em um arquivo será realizada. Então o conteúdo será substituído adicionando $ antes dos números.

#!/ bin / bash # Verifique se o valor do argumento da linha de comando existe ou não se [$ 1 != ""]; then # Pesquise todas as strings contendo dígitos e adicione $ sed -i 's / \ b [0-9] \ 5 \ \ b / $ & / g' $ 1 fi

Substituindo uma string usando o comando awk

Neste caso, devemos usar o comando awk em vez do comando sed para substituir o conteúdo de um arquivo. A diferença entre esses comandos é que o comando sed atualiza diretamente o arquivo original, o que não é o caso do comando awk.

#!/ bin / bash # Verifique se o valor do argumento da linha de comando existe ou não se [$ 1 != ""]; then # Search all string based on date awk 'sub ("02/06/2020", "12/06/2020") 1' $ 1> temp.txt && mv temp.txt $ 1 fi

Conclusão

Os exemplos acima são vitais para o seu progresso no aprendizado de como substituir uma string no Bash. Portanto, para ser bom nisso, você terá que praticar regularmente. Pesquisar e substituir string em um arquivo pode parecer complexo, mas você descobrirá que é muito mais gerenciável ao seguir nossas diretrizes corretamente.

Um ponto a ser observado é que executar os comandos às vezes pode parecer mais gerenciável, mas você deve ter cuidado para não causar estragos no sed. Quando você insere os comandos errados, você quebra o seu computador, causando mais problemas como perda de dados. Portanto, por segurança, sempre copie e cole o código no seu terminal. Isso evitará erros de ortografia que podem quebrar sua máquina. Esperamos que este artigo tenha ajudado você a aprender como substituir uma string no bash usando este artigo.

Adicione gestos do mouse ao Windows 10 usando essas ferramentas gratuitas
Nos últimos anos, os computadores e sistemas operacionais evoluíram muito. Houve um tempo em que os usuários tinham que usar comandos para navegar pel...
Controle e gerencie o movimento do mouse entre vários monitores no Windows 10
Gerenciador de mouse com tela dupla permite que você controle e configure o movimento do mouse entre vários monitores, diminuindo seus movimentos pert...
WinMouse permite que você personalize e melhore o movimento do ponteiro do mouse no PC com Windows
Se você quiser melhorar as funções padrão do ponteiro do mouse, use um freeware WinMouse. Ele adiciona mais recursos para ajudá-lo a obter o máximo do...