一、文字查詢的需要:
grep,egrep,fgrep
1、grep:根據模式搜尋文字,並將符合模式的文字行顯示出來
pattern(模式):文字字元和正規表示式的元字元組合而成匹配條件
grep [options] pattern [file...]
例:[root@ourlab ~]# grep 'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
-i:忽略大小寫
--colour:匹配的字元或字串加顏色
例:[root@ourlab ~]# grep --colour 'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
-v:顯示沒有被匹配的行
-o:只顯示被匹配的字串,且以行顯示
例:[root@ourlab ~]# grep -o 'root' /etc/passwd
root
root
root
root
2、萬用字元:
*:任意長度的任意字元
?:任意單個字元
:任意範圍內的字元
[^]:任意範圍外字元
3、正規表示式:regular expression(regexp)
元字元:
.:匹配任意單個字元
例:[root@ourlab ~]# grep 'r..t' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
ftp:x:14:50:ftp user:/var/ftp:/sbin/nologin
:匹配指定範圍內的任意單個字元
[^]:匹配指定範圍外的任意單個字元
字元集合:[:digit:]數字,[:lower:]小寫字母,[:upper:]大寫字母,[:punct:]標點符號,[:space:]空格,[:alpha:]所有字母,[:alnum:]所有字母和數字
例:顯示/etc/inittab中以數字結尾的行
[root@ourlab ~]# grep '[[:digit:]]$' /etc/inittab
# 5 - x11
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
字元次數:
*:匹配其前面的字元任意次
例:建立乙個檔案test.txt,內容為:a,b,ab,aab,acb,adb,amnb,amnbmnb,使用「a*b」進行匹配顯示的字元如下:
[root@ourlab ~]# grep 'a*b' test.txtbab
aabacb
adbamnb
amnbmnb
.*:匹配任意長度的任意字元
例:[root@ourlab ~]# grep 'a.*b' test.txt
abaab
acbadb
amnb
amnbmnb
\?:匹配其前面的字元1次或0次(使用時需要加轉義符\)
例:[root@ourlab ~]# grep 'a\?b' test.txtbab
aabacb
adbamnb
amnbmnb
\:匹配其前面的字元至少m次,至多n次
例:[root@ourlab ~]# grep 'a\b' test.txt
abaab
位置錨定:
^:錨釘行首,此字元後面的任意內容必須出現在行首
例:[root@ourlab ~]# grep '^r..t' /etc/passwd
root:x:0:0:root:/root:/bin/bash
$:錨釘行尾,此字元前面的任意內容必須出現在行尾
例:[root@ourlab ~]# grep 'w$' /etc/inittab
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
^$:空白行
例:[root@ourlab ~]# grep '^$' /etc/inittab
\《或\b:錨釘詞首,其後面的任意字元必須作為單詞的首部出現
\>或\b:錨釘詞尾,其前面的任意字元必須做為單詞的尾部出現
\<\>或\b\b:其指定的字元必須作為單詞出現
例:建立乙個檔案test2.txt,內容:this is root.the user is mroot.rooter is a dog's name.chroot is a command.mrooter is not a word.
例1:[root@ourlab ~]# grep "root\>" test2.txt
this is root.
the user is mroot.
chroot is a command.
分組:\(\):用於後向引用
例:\(ab\)*:ab作為一組同時出現或不出現
[root@ourlab ~]# grep --colour "\(ab\)" test.txt
abaab
\1:引用第乙個左括號以及與之對應的右括號所包含的所有內容
\2:引用第二個左括號以及與之對應的右括號所包含的所有內容
例:建立乙個檔案test3.txt檔案內容如下:
he love his lover.
she like her lover.
he like his liker.
she love her liker.
she like him.
[root@ourlab ~]# grep '\(l..e\).*\1' test3.txt
he love his lover.
he like his liker.
課後練習:
1、分析/etc/inittab檔案中如下文字中前兩行的特徵(每一行中出現在數字必須相同),請寫出可以精確找到類似兩行的模式:
l1:1:wait:/etc/rc.d/rc 1
l3:3:wait:/etc/rc.d/rc 3
[root@ourlab ~]# grep '^l\([0-9]\):\1.*\1$' /etc/inittab
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
Linux學習之grep命令
參考資料 root www dmesg grep n a3 b2 color auto eth 245 pci setting irq 10 as level triggered 246 acpi pci interrupt 0000 00 0e.0 a link lnkb 247 eth0 rea...
Linux命令學習之grep命令
格式 grep options pattern file grep命令堆在輸入或指定的檔案中查詢包含匹配指定模式的字元的行。grep的輸出就是包含了匹配模式的行。原始檔內容 ocetl yxddn65 demo more file12 46315 9510 ocetl yxddn65 demo gr...
linux之cp命令grep命令學習
cp命令就是在linux下對檔案複製的乙個命令,功能很強大啊。其命令格式如下 cp 複製檔案或目錄 cp adfilprsu source destination cp options source1 source2 source3 directory 引數 a 相當於 pdr 的意思 d 若 檔案...