Maison > Article > Opération et maintenance > Une brève introduction à Linux grep et aux expressions régulières
grep est un puissant outil de recherche de texte qui utilise des expressions régulières pour rechercher du texte et imprimer les lignes correspondantes. Permettez-moi de partager avec vous mes connaissances sur Linux grep et les expressions régulières à travers cet article. Les amis intéressés devraient y jeter un œil ensemble
Introduction à grep
<.> grep est un puissant outil de recherche de texte qui utilise des expressions régulières pour rechercher du texte et imprimer les lignes correspondantes. 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 :
-q : Mode silencieux, c'est-à-dire qu'aucune information n'est émise -A # : Afficher les lignes correspondant au motif et les # lignes qui le suivent-B # : Afficher les lignes correspondant au motif et les # lignes avant et après -C # : Afficher les lignes correspondant au motif et les # lignes avant et après Remarque : les guillemets doubles sont requis lorsque en utilisant grep matching Quoted (les guillemets simples sont des guillemets forts) pour empêcher le système de les confondre avec des paramètres ou des commandes spéciales et de signaler une erreur. - i : ignore la casse des caractères
-o : affiche uniquement la chaîne correspondante elle-même
-v : affiche les lignes qui ne correspondent pas au modèle-q : mode silencieux, c'est-à-dire qu'aucune information n'est sortie -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 # : Afficher le lignes correspondant au motif et leurs # lignes # lignes avant et après -G : prend en charge les expressions régulières de base
métacaractères d'expression régulière grep
egrep [OPTIONS] PATTERN [FILE...] grep -E [OPTIONS] PATTERN [FILE...]
'^' : ancre '$' : Ancre la fin de la ligne
'.' : Correspond à n'importe quel caractère
'*' : Correspond à zéro ou plusieurs caractères précédents Caractères
'?' : Faites correspondre le caractère qui le précède 0 ou 1 fois
'{m}' : Faire correspondre le caractère qui le précède m fois (pour les caractères d'échappement) '{m,n}' : faire correspondre le caractère qui le précède au moins m fois et au plus n fois
'[]' : correspond à un caractère dans la plage spécifiée | '[^]' correspond à n'importe quel caractère en dehors de la plage spécifiée 'fd7c36c25b286792e41526874eb627e8' b' : fin du mot d'ancrage (disponible cd22d989ebecf0466bc673f30afdaf24 : correspond à des mots complets) '()' : traite plusieurs caractères dans leur ensemble Backreference : quote Les caractères correspondant au motif dans les parenthèses de regroupement précédentes Le contenu correspondant au motif dans les parenthèses de regroupement peut être automatiquement enregistré dans des variables internes par le moteur d'expression régulière : 1 : Modèle En partant de la gauche, le contenu correspond par le motif entre la première parenthèse gauche et la parenthèse droite correspondante 2 : Le motif commence par la gauche, la deuxième parenthèse gauche et la parenthèse droite correspondante Le contenu correspond au motif... 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.[: chiffre:] correspond à n'importe quel chiffre unique
[: inférieur:] correspond à toute lettre minuscule unique [: Upper:] correspond à toute lettre majuscule
[: Alpha :] correspond à n'importe quelle lettre [:alnum:] correspond à n'importe quelle lettre ou chiffre [:punct:] correspond à n'importe quel symbole [:space:] correspond un seul espace Certains endroits annulent l'utilisation des caractères d'échappement : '?' : correspond au caractère précédent 0 ou 1 fois '+' : correspond au caractère ; avant 1 ou plusieurs fois ; '{m}' : correspond au caractère qui le précède m fois (pour les caractères d'échappement) '{m,n}' : correspond au caractère précédent à au moins m fois et au plus n fois () : regroupez un ou plusieurs caractères ensemble et traitez-les dans leur ensemble, et les références arrière sont utilisées comme d'habitude. |' : ou (Remarque : 'C|cat' signifie C et chat, '(C|c)at est Chat et chat') Questions pratiques : 1. Répertoriez les noms d'utilisateur de tous les utilisateurs connectés sur le système actuel Remarque : Si le même utilisateur se connecte plusieurs fois, il ne sera affiché qu'une seule fois
<.>
[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
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!