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
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
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.
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.
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
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.