Home>Article>Operation and Maintenance> Detailed explanation of wildcards and regular expressions under Linux (picture)
Regularexpressionmatches the qualifiedstringin the file. This article will introduce to you thewildcardand regular expressions underlinux. Friends who need it can refer to it
wildcard
* Any character, can be repeated multiple times
? Any character, repeated once
[] represents one character
Example: [a,b,c] represents The role of any
wildcard in abc is to match the
regular expression
regular expression used to match the file name It is used to match qualified strings in files
ls find cp does not support regular expressions
But grep awk sed supports regular expressions
[root@hadoop-bigdata01 test]# touch aa [root@hadoop-bigdata01 test]# touch aab aabb [root@hadoop-bigdata01 test]# ll total 0 -rw-r--r-- 1 root root 0 May 16 19:47 aa -rw-r--r-- 1 root root 0 May 16 19:47 aab -rw-r--r-- 1 root root 0 May 16 19:47 aabb [root@hadoop-bigdata01 test]# ls aa aa [root@hadoop-bigdata01 test]# ls aa? aab [root@hadoop-bigdata01 test]# ls aa* aa aab aabb
regular expressions FormulaSpecial characters
Regular expression matching range
Regular expression standard characters
##Use regular expressionsgrep "1" /etc/passwdThe line containing keyword 1, grep only needs to contain it, no wildcards are needed, it must be completely consistent
[root@hadoop-bigdata01 test]# grep "1" /etc/passwd bin:x:1:1:bin:/bin:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin gopher:x:13:30:gopher:/var/gopher:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin abrt:x:173:173::/etc/abrt:/sbin/nologin wang:x:501:501::/home/wang:/bin/bash grep 'root' /etc/passwd cat /etc/passwd | grep 'root'The same principle applies, but the pipe character consumes more resources So 1. Match lines containing numbers
grep '[0-9]' /etc/passwd2. Match lines containing three consecutive numbers
grep '[0-9][0-9][0-9]' /etc/passwd 或者 grep ':[0-9][0-9][0-9]:' /etc/passwd
[root@hadoop-bigdata01 test]# grep '[0-9][0-9][0-9]' /etc/passwd games:x:12:100:games:/usr/games:/sbin/nologin usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin rtkit:x:499:497:RealtimeKit:/proc:/sbin/nologin avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin abrt:x:173:173::/etc/abrt:/sbin/nologin nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin saslauth:x:498:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin pulse:x:497:496:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin liucheng:x:500:500::/home/liucheng:/bin/bash wang:x:501:501::/home/wang:/bin/bas
3. Match lines starting with r and ending with n
grep '^r.*n$' /etc/passwd .*代表所有 [root@hadoop-bigdata01 test]# grep '^r.*n$' /etc/passwd rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin rtkit:x:499:497:RealtimeKit:/proc:/sbin/nologin rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
4. Filterifconfig and intercept ip
grep -v represents reverse interception, which means to remove lines with a certain keyword sed means replacement[root@hadoop-bigdata01 test]# ifconfig | grep 'inet addr:' inet addr:192.168.126.191 Bcast:192.168.126.255 Mask:255.255.255.0 inet addr:127.0.0.1 Mask:255.0.0.0 [root@hadoop-bigdata01 test]# [root@hadoop-bigdata01 test]# ifconfig | grep 'inet addr:' | grep -v '127.0.0.1' inet addr:192.168.126.191 Bcast:192.168.126.255 Mask:255.255.255.0 [root@hadoop-bigdata01 test]# ifconfig | grep 'inet addr:' | grep -v '127.0.0.1' | sed 's/inet addr://g' 192.168.126.191 Bcast:192.168.126.255 Mask:255.255.255.0 [root@hadoop-bigdata01 test]# ifconfig | grep 'inet addr:' | grep -v '127.0.0.1' | sed 's/inet addr://g' | sed 's/Bcast.*//g' 192.168.126.191
Misunderstanding
There is a misunderstanding here. I have been thinking about it for a long time. It is the difference between regular expressions and wildcards. We know that the * in wildcards refers to any character, and the * in regular expressions that can be repeated multiple times refers to Match the previous character >= 0 times These two are completely different, so how do I know whether the * I use is a wildcard or a regular expression At first I fell into a misunderstanding, see below This string of commands[root@hadoop-bigdata01 test]# touch ac aac abc abbc [root@hadoop-bigdata01 test]# ll total 0 -rw-r--r-- 1 root root 0 May 16 19:55 aac -rw-r--r-- 1 root root 0 May 16 19:55 abbc -rw-r--r-- 1 root root 0 May 16 19:55 abc -rw-r--r-- 1 root root 0 May 16 19:55 ac [root@hadoop-bigdata01 test]# ls | grep 'a*c' aac abbc abc ac [root@hadoop-bigdata01 test]# ls | grep 'a.*c' aac abbc abc ac [root@hadoop-bigdata01 test]# ls | grep '^a.*c' aac abbc abc ac [root@hadoop-bigdata01 test]# ls | grep '^a*c' aac acWhy are the results of grep 'a*c' and grep '^a*c$' different? I thought one was a wildcard and the other was a regular expression, because a*c displays four As a result, doesn’t just match any number of characters? Actually, it is not the case. The function of wildcard is to match the regular expression of the file name. The formula is to match the qualified string in the file. After passing it to the pipe character, using grep is no longer to match the file name. This is an operation on the file, so it is completely a regular expression. grep 'a*c' means matching a>=0, so as long as it contains c, it is OK And grep '^a*c$' is also a regular expression, which means it starts with a , and the second character matches a zero or more times, followed by the letter c , so only aac and ac meet the conditions So look at this example
[root@hadoop-bigdata01 test]# ls a aac abb abbc abc ac b bb c cb [root@hadoop-bigdata01 test]# ls | grep 'a*b' abb abbc abc b bb cbHere grep 'a*b' does not mean that it contains a and b, but that a is repeated 0 or more times and then contains b
The above is the detailed content of Detailed explanation of wildcards and regular expressions under Linux (picture). For more information, please follow other related articles on the PHP Chinese website!