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
()' : 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中文网其它相关文章!
推荐阅读:
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!