Se há uma coisa com a qual o Linux está bem equipado, são os utilitários para manipulação de strings. Mas também há todo um conjunto de funcionalidades integradas no shell Bash . Veja como ele é usado.
Índice
O ecossistema Linux está repleto de ferramentas fantásticas para trabalhar com texto e strings. Isso inclui awk , grep , sed e cut . Para qualquer disputa de texto pesado, essas devem ser suas escolhas.
Às vezes, porém, é conveniente usar os recursos integrados do shell, especialmente quando você está escrevendo um script curto e simples. Se o seu script for compartilhado com outras pessoas e executado em seus computadores, usar a funcionalidade Bash padrão significa que você não precisa se perguntar sobre a presença ou versão de qualquer um dos outros utilitários.
Se você precisa do poder dos utilitários dedicados, use-os sem dúvida. É para isso que eles existem. Mas muitas vezes o seu script e o Bash podem fazer o trabalho sozinhos.
Como eles são integrados ao Bash, você pode usá-los em scripts ou na linha de comando. Usá-los em uma janela de terminal é uma maneira rápida e conveniente de criar protótipos de seus comandos e aperfeiçoar a sintaxe. Evita o ciclo de edição, salvamento, execução e depuração.
Tudo o que precisamos para declarar uma variável e atribuir uma string a ela é nomear a variável, usar o sinal de igual
=
e forneça a string. Se houver espaços em sua string, coloque-a entre aspas simples ou duplas. Certifique-se de que não haja espaços em branco em nenhum dos lados do sinal de igual.
my_string="Olá, mundo geek de instruções."
echo $minha_string
Depois de criar uma variável, esse nome de variável é adicionado à lista de palavras de conclusão de tabulação do shell. Neste exemplo, digitar “my_” e pressionar a tecla “Tab” inseriu o nome completo na linha de comando.
Existe um declare
comando que podemos usar para declarar variáveis. Em casos simples, você realmente não precisa dele, mas usá-lo permite usar algumas das opções do comando. Provavelmente o que você mais usaria é a -r
opção (somente leitura). Isso cria uma variável somente leitura que não pode ser alterada.
declare -r read_only_var="Esta é uma string imutável!"
Se tentarmos atribuir um novo valor a ele, ele falhará.
read_only_var="Uma nova string..."
Podemos escrever várias strings na janela do terminal usando echo ou printf para que pareçam ser uma string. E não estamos limitados às nossas próprias variáveis de strings, podemos incorporar variáveis de ambiente em nossos comandos.
user_account="Sua conta de usuário é:"
echo $user_account $USER
O operador mais-igual, +=
, permite “adicionar” duas strings juntas. É chamado de concatenação.
user_account="Sua conta de usuário é:"
conta_usuário+=$USUÁRIO
eco $ conta_usuário
Observe que você não recebe um espaço adicionado automaticamente entre strings concatenadas. Se precisar de um espaço, você precisa colocá-lo explicitamente no final da primeira string ou no início da segunda.
user_account="Sua conta de usuário é: "
conta_usuário+=$USUÁRIO
eco $ conta_usuário
Além de criar variáveis de string cujo conteúdo é definido como parte de sua declaração, podemos ler a entrada do usuário em uma variável de string.
O read
comando lê a entrada do usuário. A -p
opção (prompt) grava um prompt na janela do terminal. A entrada do usuário é armazenada na variável string. Neste exemplo, a variável é chamada user_file
.
read -p "Abrir qual arquivo?" user_file
eco $ arquivo_usuário
Se você não fornecer uma variável de string para capturar a entrada, ela ainda funcionará. A entrada do usuário será armazenada em uma variável chamada REPLY
.
leia -p "Abrir qual arquivo?"
echo $REPLY
Geralmente é mais conveniente fornecer sua própria variável e dar a ela um nome significativo.
Agora que temos nossas strings, sejam elas definidas no momento da criação, lidas a partir da entrada do usuário ou criadas pela concatenação de strings, podemos começar a fazer coisas com elas.
Se for importante ou útil saber o comprimento de uma string, podemos obtê-lo precedendo o nome da variável com um #
símbolo de hash ” “.
my_string="Existem 39 caracteres nesta string."
eco ${#minha_string}
Podemos extrair uma substring de uma variável de string fornecendo um ponto inicial dentro da string e um comprimento opcional. Se não fornecermos um comprimento, a substring conterá tudo, desde o ponto inicial até o último caractere.
O ponto inicial e o comprimento seguem o nome da variável, com dois pontos ” :
” entre eles. Observe que os caracteres em uma variável de string são numerados começando em zero.
long_string="Frankenstein ou o Prometeu Moderno"
substring=${long_string:0:12}
eco $substring
eco ${long_string:27}
Outra variação permite descartar um número de letras do final da string. Efetivamente, ele permite definir um ponto inicial e usar um número negativo como comprimento. A substring conterá os caracteres do ponto inicial até o final da string, menos o número de caracteres que você especificou no número negativo.
minha_string="alfabética"
echo ${minha_string:5:-4}
Em todos os casos, a variável string original permanece intacta. A substring “extraída” não é realmente removida do conteúdo da variável.
A desvantagem de usar deslocamentos de caracteres é que você precisa saber antecipadamente onde as substrings que deseja extrair estão localizadas na string.
Se sua string for delimitada por um caractere repetido, você poderá extrair substrings sem saber onde elas estão na string, nem quanto tempo elas têm.
Para pesquisar a partir do início da string, siga o nome da variável com sinais duplos de porcentagem, %%
, o caractere delimitador e um asterisco, *
. As palavras nesta string são delimitadas por espaços.
long_string="primeiro segundo terceiro quarto quinto"
eco ${long_string%%' '*}
Isso retorna a primeira substring da frente da string que não contém o caractere delimitador. Isso é chamado de opção de substring curta.
A opção de substring longa retorna a parte frontal da string até a última substring delimitada. Em outras palavras, omite a última substring delimitada. Sintaticamente, a única diferença é que ele usa um único sinal de porcentagem ” %
” no comando.
long_string="primeiro segundo terceiro quarto quinto"
echo ${long_string%' '*}
Como seria de esperar, você pode pesquisar da mesma maneira a partir do final da string. Em vez de um sinal de porcentagem, use um #
sinal de hash ” ” e mova o delimitador para vir depois do asterisco ” *
” no comando.
long_string = "this.long.string.of.words.is.delimited.by.periods"
eco ${long_string##*.}
Esta é a opção de substring curta, ela corta a primeira substring encontrada na parte traseira da string que não contém o delimitador.
long_string = "this.long.string.of.words.is.delimited.by.periods"
echo ${long_string#*.}
A opção de substring longa retorna a parte traseira da string até o primeiro delimitador da frente da string. Em outras palavras, omite a primeira substring delimitada.
Trocar substrings por outras substrings é fácil. O formato é o nome da string, a substring que será substituída e a substring que será inserida, separados por /
caracteres de barra ” “.
string="porco azul ri"
echo ${string/porco/cabra}
Para limitar a pesquisa ao final da string, preceda a string de pesquisa com um %
caractere de sinal de porcentagem ” “.
string="porco azul ri"
echo ${string/%giggles/risos}
Para limitar a pesquisa ao início da string, preceda a string de pesquisa com um #
caractere hash ” “.
string="porco azul ri"
echo ${string/#azul/amarelo}
Se uma string não estiver exatamente como você gostaria ou precisa, essas ferramentas ajudarão você a reformatá-la para que atenda às suas necessidades. Para transformações complicadas, use os utilitários dedicados, mas para pequenos ajustes use os shell integrados e evite a sobrecarga de carregar e executar uma ferramenta externa.
Muitos aplicativos de limpeza estão disponíveis para Windows ao longo dos anos, mas hoje em…
Seu PlayStation 4 está congelado? Seus jogos favoritos continuam travando? Reiniciar seu PS4 pode resolver…
A popularidade das mensagens de texto significou aprender uma forma totalmente nova de comunicação. Você…
A foto dos "Pilares da Criação" tirada pelo Telescópio Espacial Hubble é uma das fotos…
O Proton Drive saiu de seu estágio beta há algumas semanas, mas o aplicativo real…
Para ver suas fotos mais de perto ou para uma edição precisa , você pode…