[精華] Grep 用法

Grep : g (globally) search for a re (regular expression ) and p (print ) the results.

1、參數:
-I :忽略大小寫
-c :打印匹配的行數
-l :從多個文件中查找包含匹配項
-v :查找不包含匹配項的行
-n:打印包含匹配項的行和行標

2、RE(正則表達式)
/ 忽略正則表達式中特殊字符的原有含義
^ 匹配正則表達式的開始行
$ 匹配正則表達式的結束行
/< 從匹配正則表達式的行開始
/>; 到匹配正則表達式的行結束
[ ] 單個字符;如[A] 即A符合要求
[ - ] 範圍 ;如[A-Z]即A,B,C一直到Z都符合要求
. 所有的單個字符
* 所有字符,長度可以爲0

3、舉例
# ps -ef | grep in.telnetd
root 19955 181 0 13:43:53 ? 0:00 in.telnetd

# more size.txt size文件的內容
b124230
b034325
a081016
m7187998
m7282064
a022021
a061048
m9324822
b103303
a013386
b044525
m8987131
B081016
M45678
B103303
BADc2345

# more size.txt | grep '[a-b]' 範圍 ;如[A-Z]即A,B,C一直到Z都符合要求
b124230
b034325
a081016
a022021
a061048
b103303
a013386
b044525
# more size.txt | grep '[a-b]'*
b124230
b034325
a081016
m7187998
m7282064
a022021
a061048
m9324822
b103303
a013386
b044525
m8987131
B081016
M45678
B103303
BADc2345

# more size.txt | grep '' 單個字符;如[A] 即A符合要求
b124230
b034325
b103303
b044525
# more size.txt | grep '[bB]'
b124230
b034325
b103303
b044525
B081016
B103303
BADc2345

# grep 'root' /etc/group
root::0:root
bin::2:root,bin,daemon
sys::3:root,bin,sys,adm
adm::4:root,adm,daemon
uucp::5:root,uucp
mail::6:root
tty::7:root,tty,adm
lp::8:root,lp,adm
nuucp::9:root,nuucp
daemon::12:root,daemon

# grep '^root' /etc/group 匹配正則表達式的開始行
root::0:root


# grep 'uucp' /etc/group
uucp::5:root,uucp
nuucp::9:root,nuucp

# grep '/<uucp' /etc/group
uucp::5:root,uucp


# grep 'root$' /etc/group 匹配正則表達式的結束行
root::0:root
mail::6:root


# more size.txt | grep -i 'b1..*3' -i :忽略大小寫

b124230
b103303
B103303

# more size.txt | grep -iv 'b1..*3' -v :查找不包含匹配項的行

b034325
a081016
m7187998
m7282064
a022021
a061048
m9324822
a013386
b044525
m8987131
B081016
M45678
BADc2345

# more size.txt | grep -in 'b1..*3'
1:b124230
9:b103303
15:B103303

# grep '$' /etc/init.d/nfs.server | wc -l
128
# grep '/$' /etc/init.d/nfs.server | wc –l 忽略正則表達式中特殊字符的原有含義

15
# grep '/$' /etc/init.d/nfs.server
case "$1" in
>;/tmp/sharetab.$$
[ "x$fstype" != xnfs ] && /
echo "$path/t$res/t$fstype/t$opts/t$desc" /
>;>;/tmp/sharetab.$$
/usr/bin/touch -r /etc/dfs/sharetab /tmp/sharetab.$$
/usr/bin/mv -f /tmp/sharetab.$$ /etc/dfs/sharetab
if [ -f /etc/dfs/dfstab ] && /usr/bin/egrep -v '^[ ]*(#|$)' /
if [ $startnfsd -eq 0 -a -f /etc/rmmount.conf ] && /
if [ $startnfsd -ne 0 ]; then
elif [ ! -n "$_INIT_RUN_LEVEL" ]; then
while [ $wtime -gt 0 ]; do
wtime=`expr $wtime - 1`
if [ $wtime -eq 0 ]; then
echo "Usage: $0 { start | stop }"


# more size.txt

the test file
their are files
The end

# grep 'the' size.txt
the test file
their are files

# grep '/<the' size.txt
the test file
their are files

# grep 'the/>;' size.txt
the test file

# grep '/<the/>;' size.txt
the test file

# grep '/<[Tt]he/>;' size.txt
the test file
The end

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章