ホームページ  >  記事  >  運用・保守  >  Linuxにおけるワイルドカードと正規表現の詳しい説明(写真)

Linuxにおけるワイルドカードと正規表現の詳しい説明(写真)

黄舟
黄舟オリジナル
2017-05-27 10:23:561972ブラウズ

Regularexpression は、ファイル内の修飾された strings と一致するために使用されます。この記事では、linux ワイルドカード と正規表現を紹介します。必要な友達は参照してください

ワイルドカード

* 任意の文字を複数回繰り返すことができます
?一度
[]は文字を表します

例:[a,b,c]はabcのいずれかを表します

ワイルドカードの役割はファイル名と一致することです

正規表現

正規表現は

ファイル内の修飾文字列に一致する cp の検索は正規表現をサポートしません

が、grep awk sed は正規表現をサポートします

[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

正規表現特殊文字

Range に一致する正規表現

Regular式の標準文字

正規表現を使用してください

 grep "1" /etc/passwd

キーワード 1 を含む行、grep に含める必要があるだけです、ワイルドカードは不要です、まったく同じである必要があります

[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'

同じ理由ですが、パイプ文字はより多くのリソースを消費します

ので

1. 数字を含む行に一致

  grep '[0-9]' /etc/passwd

2. 3 つの連続する数字を含む行に一致

rreee3. r で始まり n で終わる行に一致します

ifconfig, intercept ip

grep -v は逆インターセプトを表し、特定のキーワードを含む行を削除することを意味します sed は置換を意味します

 grep '[0-9][0-9][0-9]' /etc/passwd      或者  grep ':[0-9][0-9][0-9]:' /etc/passwd

誤解

ここで誤解があります、少し考えた後長い間、それは正規表現とワイルドカードの違いです

ワイルドカードの * は任意の文字を指し、複数回繰り返すことができることはわかっています

正規表現の * は、前の文字と 0 回以上一致することを指します。この 2 つはまったく異なります。では、使用する * がワイルドカードなのか正規表現なのかをどうやって知ることができるのでしょうか。最初は誤解しました。次の一連のコマンドを見てください

[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

なぜ grep 'a*c' するのでしょうか?と grep '^a*c $' の結果は異なります。a*c で表示される 4 つの結果は正確に一致するため、1 つはワイルドカードで、もう 1 つは正規表現だと思います

実際にはそうではありません

ワイルドカードの役割は、ファイル名を一致させるために使用される

正規表現をパイプ文字に渡した後に使用することです

はファイル名と一致しなくなり、ファイルに対する操作なので完全に正規表現です

grep 'a*c' は a>=0 と一致することを意味するので、c が含まれていればOKです

そして、grep '^a*c$' も正規表現です。つまり、a で始まり、2 番目の文字が 0 回以上一致し、その後に文字 c が続きます

つまり、aac と ac のみが条件を満たします

この例を見てください

 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

ここで grep 'a*b' は a と a b を参照していません。代わりに、a が 0 回以上繰り返され、b が含まれています

以上がLinuxにおけるワイルドカードと正規表現の詳しい説明(写真)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。