Programação Linux Bash Shell (6): exemplos de aplicação de metacaracteres básicos em expressões regulares

  Na seção anterior , aprendemos sobre cálculo de variável, substituição de conteúdo de variável e arquivos de configuração de variável de ambiente no Bash Shell. Depois de compreender as variáveis ​​e operações / operações relacionadas, esta seção começa, aprenderemos juntos sobre o processamento de strings no Shell. Como alguns comandos do Bash oferecem suporte a expressões regulares, também entenderemos os fundamentos das expressões regulares. uso

Bash Shell (六)

Introdução às expressões regulares

  Expressão regular é um modo de correspondência de string, que é usado para corresponder strings qualificadas em um arquivo. Regular inclui correspondência (correspondência se a linha do arquivo contiver condições). Expressões regulares podem ser usadas para corresponder a requisitos mais complexos. grep awk sedO comando suporta expressões regulares.

  Os curingas também usados ​​no Shell são usados ​​para corresponder aos nomes de arquivo que atendem às condições. É uma correspondência completa e ls find cpnão oferece suporte a expressões regulares. Apenas curingas podem ser usados. As condições de correspondência para curingas são relativamente simples.

Metacaracteres de expressão regular básica

Metacaractere efeito
* Corresponde ao caractere anterior 0 ou qualquer número de vezes
\ + Corresponde ao caractere anterior 1 vez ou qualquer número de vezes
. Corresponde a qualquer caractere, exceto nova linha
^ Corresponde ao início da linha. Corresponder as linhas que começam com o seguinte texto
$ Corresponde ao final da linha, ou seja, a linha que termina com o seguinte texto
[] Corresponde a qualquer caractere (apenas um) especificado nos colchetes, o mesmo que curinga
[^] Negar, combinar qualquer caractere, exceto os caracteres entre colchetes, o mesmo que curinga
\ Caractere de escape, cancele o significado de símbolos especiais
\ {n \} Indica que o caractere antes dele aparece exatamente n vezes
\ {n, \} Indica que o caractere anterior aparece pelo menos n vezes
\ {n, m \} Indica que o caractere antes dele aparece pelo menos n vezes e no máximo m vezes.

Uso de metacaracteres e precauções

  • Para * \+dois metacaracteres (por exemplo "a*"), não faz sentido ser independente como condição de correspondência. Por causa das características de correspondência, pode ser "aa*"usado "a"como uma maneira conveniente de substituir. Este metacaractere é geralmente usado para a repetição de um único caractere dentro de uma palavra. Por exemplo,

    Para combinar palavras semelhantes a "uuuuuuuraaaaa" ( ucom aquantidade desconhecida), você pode usar "u*ra*"condições de correspondência

  • O metacaractere no início da linha deve estar no primeiro lugar, por exemplo "^abc"; o metacaractere no final da linha deve estar no último lugar, por exemplo"abc$"

  • .Equivalente a curinga ?, pode corresponder a qualquer caractere, incluindo caracteres vazios

  • Os metacaracteres de colchetes podem usar um conjunto enumerado ou usar um sinal de menos para -conectar o início e o final do intervalo , como correspondência de todas as letras minúsculas "[a-z]"e correspondência de caracteres não numéricos "[^0-9]". Apenas para um personagem

  • Deve haver um caractere de escape no lado esquerdo das chaves (independentemente de esquerda e direita)\

  • Em relação ao metacaractere chave: não é o número de caracteres que aparecem em uma linha, mas o número de caracteres que aparecem continuamente. Não faz sentido definir o valor máximo quando usado de forma independente como uma condição de correspondência. Ainda assim, pode-se considerar que a linha não contém mais do que Máximo de caracteres repetidos

Cenários de aplicação de expressão regular

Existem muitos comandos que suportam expressões regulares. Abaixo, selecione os comandos de pesquisa de string mais comumente usados greppara demonstração de exemplo

#grep命令语法
grep [mode] [options] <pattern> <filename>
#描述模式的匹配类型 模式 文件名
  • Tipo de correspondência de padrão
Tipo de Padrão efeito
-E Expressão regular estendida
-F Corda
-G Expressão regular básica (tipo de padrão padrão)
-P Expressão regular Perl
  • grepOpções comuns de comando
Opções Descrição
-n Exibir a linha correspondente enquanto exibe o número da linha
-b Exibir deslocamento de byte (os primeiros caracteres)
-Eu Ignorar maiúsculas e minúsculas ao combinar
-v A condição de correspondência é revertida e as linhas que não correspondem à condição são exibidas
  • O modo de correspondência é a condição de correspondência, e as linhas que atendem às condições serão filtradas e exibidas
  • grepOs comandos também suportam barras verticais (comumente usados) e entrada do console. A entrada do console termina com ctrl+ d(várias linhas são permitidas, portanto, não pode enterterminar com)
  • O padrão de correspondência deve ser colocado entre aspas duplas "", caso contrário, o resultado da pesquisa pode produzir erros

Exemplo de expressão regular

Primeiro crie um arquivo com parte do material, edite como quiser

#以下内容存储在测试素材文件a中
Hello!
I am Zheng@Kali
The excutible files' extension in windows is .exe
I am a enthusiastic man.
My Phone number is 13957191293.
isn't it a good idea?
eeee
uuuuuuraaaaa! uuuraaaa!
  1. Número de telefone correspondente

    O primeiro dígito do número do telefone celular geralmente é 1, o segundo dígito geralmente é de 3 a 8 e os últimos nove dígitos são arbitrários

zheng@Kali:~/temp$ grep "1[3-8][0-9]\{9\}" a
My Phone number is 13957191293.
#匹配模式一定要用""包含
  1. Encontre a linha começando com i

    grep "^i" a
    isn't it a good idea?
    
    grep -i "^i" a  #使用忽略大小写选项
    I am Zheng@Kali
    I am a enthusiastic man.
    isn't it a good idea?
    
  2. * +Exemplos de metacaracteres

    O conteúdo da amostra é o mesmo que uso e precauções

    zheng@Kali:~/temp$ grep "u*ra*" a
    My Phone number is 13957191293.
    uuuuuuraaaaa! uuuraaaa!
    
    zheng@Kali:~/temp$ grep "u*ra\+" a #使用 + 元字符一定要使用转义符,否则相当于直接匹配加号
    uuuuuuraaaaa! uuuraaaa!
    

    Nota: Se u e a não aparecerem no exemplo acima, se o caractere no padrão correspondente não aparecer na linha, ele ainda pode corresponder, e + não pode corresponder *


A próxima seção, programação do Linux Bash Shell (7): interceptação e processamento de strings (cut, printf, awk, sed) Aprenderemos sobre a interceptação de strings, saída e comandos de processamento
em bash. A seção anterior, programação do Linux Bash Shell (5) ): Variável (abaixo) operação variável, substituição de conteúdo, arquivo de configuração de variável de ambiente

Acho que você gosta

Origin blog.csdn.net/Zheng__Huang/article/details/107993942
Recomendado
Clasificación