Maison  >  Article  >  interface Web  >  L'utilisation de Linux grep et des expressions régulières

L'utilisation de Linux grep et des expressions régulières

php中世界最好的语言
php中世界最好的语言original
2018-03-29 11:53:511977parcourir

Cette fois, je vais vous présenter l'utilisation de Linux grep et des expressions régulières Quelles sont les précautions pour utiliser Linux grep et les expressions régulières. Voici les cas pratiques. un coup d'oeil.

Introduction à grep

Grep est un puissant outil de recherche de texte qui utilise des expressions régulières pour rechercher du texte et combiner des lignes correspondantes. Imprimez-le. Il existe généralement trois versions de grep : grep, egrep (équivalent à grep -E) et fgrep. egrep est un grep étendu et fgrep est un grep rapide (chaîne fixe pour rechercher du texte, ne prend pas en charge les références d'expressions régulières mais la requête est extrêmement rapide). grep est l'un des trois mousquetaires du traitement de texte Linux.

Comment utiliser grep

Comment utiliser :

grep [OPTIONS] PATTERN [FILE...]
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]

Options communes :

--color=auto : colore le texte correspondant et surlignez-le

-i : ignore la casse des caractères

-o : affiche uniquement la chaîne correspondante

-v : Afficher les lignes qui ne peuvent pas correspondre au modèle

-E : Prend en charge l'utilisation d'expressions régulières étendues

-q : Mode silencieux, c'est-à-dire qu'aucune information n'est affichée

 -A # : Afficher les lignes correspondant au motif et les # lignes qui le suivent

-B # : Afficher les lignes correspondant au motif et les # lignes qui le précèdent

-C # : Affiche les lignes correspondant au motif et les # lignes avant et après celui-ci

Remarque : Lorsque vous utilisez la correspondance grep, vous devez utiliser des guillemets doubles (les guillemets simples sont des guillemets forts) pour empêcher le système de le confondant avec des paramètres ou des commandes spéciales et signalant une erreur.

Utilisation étendue de grep

Utilisation :

egrep [OPTIONS] PATTERN [FILE...]
grep -E [OPTIONS] PATTERN [FILE...]

-i : ignorer la casse des caractères
- o : Afficher uniquement la chaîne correspondante elle-même
-v : Afficher les lignes qui ne correspondent pas au modèle
-q : Mode silencieux, c'est-à-dire qu'aucune information n'est affichée
-A # : Afficher les lignes qui correspondent au motif La ligne correspondante et les # lignes qui la suivent
-B # : Affiche la ligne correspondant au motif et les # lignes qui la précèdent
-C # : Affiche la ligne correspondant au motif et les # lignes avant et après
-G : Prise en charge des expressions régulières de base

métacaractères d'expression régulière grep

'^' : ancre le début de la ligne

'$' : fin de la ligne d'ancrage

'.' : correspond à n'importe quel caractère

'*' : correspond à zéro ou plusieurs caractères précédents

'? ' : Faites correspondre le caractère qui le précède 0 ou 1 fois

'+' : Faites correspondre le caractère qui le précède 1 ou plusieurs fois

'{m}' : Faire correspondre le caractère qui le précède Caractère m fois (pour les caractères d'échappement)

'{m,n}' : Faire correspondre le caractère précédent au moins m fois et au plus n fois

'[]' : Correspond à une plage spécifiée Les caractères dans | '[^]' correspondent à n'importe quel caractère en dehors de la plage spécifiée

'<' ou 'b' : ancre le début d'un mot, '>' ' : ancre la fin d'un mot ( Disponible : correspond aux mots complets)

 ()' : traite plusieurs caractères dans leur ensemble

 Référence arrière : références le regroupement précédent Les caractères correspondant au motif entre parenthèses

Le contenu correspondant au motif entre parenthèses de groupe peut être automatiquement enregistré dans des variables internes par le moteur d'expression régulière :

1 : Modèle du left En partant de la gauche, le contenu correspond au motif entre le premier support gauche et le support droit correspondant

2 : Le motif commence par la gauche, le motif entre le deuxième support gauche et le support droit correspondant Correspond content...

Les expressions régulières étendues sont légèrement différentes des expressions régulières :

'[]' : correspond toujours à n'importe quel caractère dans la plage spécifiée, mais il existe de nombreuses méthodes de correspondance spéciales ;

 [:digit:] correspond à n'importe quel chiffre

 [:lower:] correspond à n'importe quelle lettre minuscule      

    [:upper:] 匹配任意单个大写字母

    [:alpha:] 匹配任意单个字母

    [:alnum:] 匹配任意单个字母或数字

    [:punct:] 匹配任意单个符号

    [:space:] 匹配单个空格

  一些地方取消了转义字符的使用:

  ‘?‘:匹配其前面的字符0次或者1次;

  ‘+':匹配其前面的字符1次或者多次;

  ‘{m}‘:匹配其前面的字符m次(\为转义字符)

  ‘{m,n}':匹配其前面的字符至少m次,至多n次

  ():将一个或多个字符捆绑在一起,当做一个整体进行处理,反向引用照常使用。

  ‘|':或(注:‘C|cat'为C与cat,‘(C|c)at才是Cat与cat')

练习题:

  1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次

[root@localhost ~]# who | cut -d' ' -f1|uniq
root

  2、取出最后登录到当前系统的用户的相关信息

[root@localhost ~]# id `last | head -1 | cut -d' ' -f1`
uid=0(root) gid=0(root) groups=0(root)

  3.取出当前系统上被用户当做其默认shell最多的那个shell

[root@localhost ~]# cut -d':' -f7 /etc/passwd|uniq -c|sort -n|tail -1|cut -d' ' -f7
/sbin/nologin

  4.将/etc/passd中的第三个字段设置最大的后10个用户的信息全部改为大写保存至/tmp/maxuser.txt文件中

[root@localhost ~]# sort -t':' -k3 -n /etc/passwd|tail -10|tr 'a-z' 'A-Z' >/tmp/maxusers.txt
[root@localhost ~]# cat /tmp/maxusers.txt 
NOBODY:X:99:99:NOBODY:/:/SBIN/NOLOGIN
SYSTEMD-NETWORK:X:192:192:SYSTEMD NETWORK MANAGEMENT:/:/SBIN/NOLOGIN
NGINX:X:996:994:NGINX WEB SERVER:/VAR/LIB/NGINX:/SBIN/NOLOGIN
CHRONY:X:997:995::/VAR/LIB/CHRONY:/SBIN/NOLOGIN
POLKITD:X:998:996:USER FOR POLKITD:/:/SBIN/NOLOGIN
SYSTEMD-BUS-PROXY:X:999:997:SYSTEMD BUS PROXY:/:/SBIN/NOLOGIN
DINGJIE:X:1000:1000:DINGJIE:/HOME/DINGJIE:/BIN/BASH
JEFF:X:1001:1024:WOSHIDASHUAIBI:/HOME/JEFF:/BIN/BASH
EGON:X:1002:1002::/HOME/EGON:/BIN/BASH
NFSNOBODY:X:65534:65534:ANONYMOUS NFS USER:/VAR/LIB/NFS:/SBIN/NOLOGIN

  5.取出当前主机的IP地址

[root@localhost ~]# ifconfig | egrep "inet.*broadcast.*"|cut -d' ' -f10
192.168.0.133

  6.列出/etc目录下所有已.conf结尾的文件的文件名,并将其名字转换为大写后保存至/tmp/etc.conf文件中

[root@localhost ~]# find /etc -name '*.conf' | egrep -o "[^/]*(\.conf)$"|tr 'a-z' 'A-Z' >/tmp/etc.conf
[root@localhost ~]# cat /tmp/etc.conf 
RESOLV.CONF
CA-LEGACY.CONF
FASTESTMIRROR.CONF
LANGPACKS.CONF
SYSTEMD.CONF
VERSION-GROUPS.CONF
LVM.CONF
LVMLOCAL.CONF
ASOUND.CONF
LDAP.CONF
MLX4.CONF
RDMA.CONF
SMTPD.CONF

  7.显示/var目录下一级子目录或文件的总数

[root@localhost ~]# ls /var | wc -l

  8.取出/etc/group第三个字段数值最小的10个组的名字

[root@localhost ~]# sort -t: -k3 -n /etc/group|head -10 |cut -d':' -f1
root
bin
daemon
sys
adm
tty
disk
lp
mem
kmem

  9.将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test文件中

[root@localhost ~]# cat /etc/fstab /etc/issue > /tmp/etc.test
[root@localhost ~]# cat /tmp/etc.test 
#
# /etc/fstab
# Created by anaconda on Sat May 13 10:12:58 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/cl-root   /            xfs   defaults    0 0
UUID=2789d01a-4e2b-47a5-9c3c-537641648663 /boot          xfs   defaults    0 0
/dev/mapper/cl-swap   swap          swap  defaults    0 0
\S
Kernel \r on an \m

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

怎么用正则把字符串分组

JS的正则replace搜索关键字高亮效果

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn