Scripts de shell -------- cognição de expressões regulares

Expressão regular

As expressões regulares são divididas em expressões regulares básicas e expressões regulares estendidas. Não é um programa de ferramenta, mas uma base padrão para o processamento de strings. Ele usa uma única string para pesquisar e combinar uma série de strings que atendem a uma determinada regra gramatical.

Definição de expressão regular

  • A expressão regular também é chamada de expressão regular, expressão regular
  • Use strings para descrever e combinar uma série de strings que atendem a uma determinada regra
  • A composição das expressões regulares:
    -caracteres ordinários: letras maiúsculas e minúsculas, números, sinais de pontuação e alguns outros símbolos
    -Metacaracteres: caracteres especiais com significado especial em expressões regulares
  • Ferramentas que suportam expressões regulares:
    -vi editor: suporta expressões regulares básicas; não suporta expressões regulares estendidas
    -grep: suporta expressões regulares básicas; não suporta expressões regulares estendidas
    -egrep: suporta expressões regulares básicas; suporta Expressões regulares estendidas
    -sed: oferece suporte a expressões regulares básicas; não oferece suporte a expressões regulares estendidas
    -awk: oferece suporte a expressões regulares básicas; oferece suporte a expressões regulares estendidas

Expressão regular básica

  • Expressões regulares básicas são partes de expressões regulares comumente usadas
  • Além de caracteres comuns, metacaracteres comuns:
Metacaractere efeito
\ O caractere de escape é usado para cancelar o significado de símbolos especiais, por exemplo: \! , \ N
^ A posição inicial do caractere correspondente; por exemplo: ^ palavra corresponde à linha que começa com palavra
$ A posição final do caractere correspondente; por exemplo: palavra $ corresponde à linha que termina com palavra
. Corresponde a qualquer caractere, exceto \ n (nova linha)
* Corresponde à subexpressão anterior 0 ou mais vezes
[Lista] Corresponde a um caractere da lista; por exemplo: [0-9] corresponde a qualquer dígito
[^ list] Corresponde a um caractere que não está na lista; por exemplo: [^ 0-9] corresponde a qualquer caractere diferente de dígito
\ {n \} Corresponde à subexpressão anterior n vezes; por exemplo: [0-9] \ {2 \} corresponde a dois dígitos
\ {n, \} A subexpressão que corresponde a macarrão monetário não é inferior a n vezes; por exemplo: [0-9] \ {2, \} significa dois ou mais dígitos
\ {n, m \} Corresponde à subexpressão precedente n a m vezes; por exemplo: [az] \ {2,3 \} corresponde a duas a três letras minúsculas
[] Conjunto de caracteres; corresponde a qualquer caractere contido; por exemplo: "[abc]" pode corresponder ao "a" em "[abc]"
[n1-n2] Intervalo de caracteres; corresponde a qualquer caractere não incluído

Pegue a ferramenta grep e o arquivo / etc / passwd como exemplos e dê alguns exemplos:

grep root /etc/passed   :筛选文件中包含root的行

grep ^root /etc/passwd  :筛选出以root开头的行

grep bash$ /etc/passwd  :筛选出以bash结尾的行

grep -v root /etc/passwd  :筛选文件中不包含root的行

grep 'r..d' /etc/passwd  :筛选出 r 和 d 之间有两个字符的行

grep '[^s]bin' /etc/passwd  :筛选 bin 前面不是 s 的行

grep “^$” /etc/passwd  :筛选出空白行,没有空白行的所以没输出

grep 't[es]' /etc/passwd  :筛选包含字符串 te 或 ts 的行

grep '0\ {1,\}' /etc/passwd  :查找数字 0 出现1次以上

grep -e "ntp" -e "root" /etc/passwd  :-e 参数查找多个模式  

"*" significa qualquer caractere no curinga. Em expressões regulares, significa corresponder à subexpressão anterior 0 ou mais vezes

grep 0* /etc/passwd  :这里的0*会匹配所有内容(若是有空白行的文件,甚至包括空白行)
grep 00* /etc/passwd  :这里的00* 匹配至少包含一个 0 的行(第一个 0 必须出现,第二个0可以出现0次或者多次)

Expressão regular estendida

  • Expressão regular estendida é para expandir e aprofundar a expressão regular básica
  • Metacaracteres comuns
Metacaractere efeito
+ Repete um ou mais do caractere anterior
0 ou um caractere antes
Símbolo de tubo Use ou (ou) para encontrar vários caracteres
() Encontre o personagem do "grupo"
() + Identifique vários grupos duplicados

Pegue a ferramenta egrep, o arquivo / etc / passwd como exemplo e dê alguns exemplos:

egrep 0+ /etc/passwd  :匹配至少一个 0 的行

egrep '(root|ntp)' /etc/passwd  :匹配包含 root 或 ntp 的行

egrep ro?t /etc/passwd  :匹配 rt 或者 rot 的行

egrep -v '^$|^#' /etc/passed  :过滤文件中的空白行与 # 开头的行,没有空白行与 # 号开头的行,所以没有任何输出

Acho que você gosta

Origin blog.csdn.net/XCsuperman/article/details/108184114
Recomendado
Clasificación