亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網(wǎng)絡(luò),我們將竭誠(chéng)為您提供優(yōu)質(zhì)的服務(wù)! 誠(chéng)征網(wǎng)絡(luò)推廣 | 網(wǎng)站備案 | 幫助中心 | 軟件下載 | 購(gòu)買流程 | 付款方式 | 聯(lián)系我們 [ 會(huì)員登錄/注冊(cè) ]
促銷推廣
客服中心
業(yè)務(wù)咨詢
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352289
點(diǎn)擊這里給我發(fā)消息  81721488
有事點(diǎn)擊這里…  376585780
有事點(diǎn)擊這里…  872642803
有事點(diǎn)擊這里…  459248018
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  380791050
技術(shù)支持
有事點(diǎn)擊這里…  714236853
有事點(diǎn)擊這里…  719304487
有事點(diǎn)擊這里…  1208894568
有事點(diǎn)擊這里…  61352289
在線客服
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  983054746
有事點(diǎn)擊這里…  893984210
當(dāng)前位置:首頁 >> 技術(shù)文章 >> 文章瀏覽
技術(shù)文章

Linux文本匹配命令grep與fgrep使用

添加時(shí)間:2016-5-9 19:19:10  添加: 思海網(wǎng)絡(luò) 
grep 

grep (global search regular expression(RE) and print out the line,全面搜索正則表達(dá)式并把行打印出來)是一種強(qiáng)大的文本搜索工具,它能使用正則表達(dá)式搜索文本,并把匹配的行打印出來。Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的擴(kuò)展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它們把所有的字母都看作單詞,也就是說,正則表達(dá)式中的元字符表示回其自身的字面意義,不再特殊。Linux使用GNU版本的grep。它功能更強(qiáng),可以通過-G、-E、-F命令行選項(xiàng)來使用egrep和fgrep的功能。

grep的工作方式是這樣的,它在一個(gè)或多個(gè)文件中搜索字符串模板。如果模板包括空格,則必須被引用,模板后的所有字符串被看作文件名。搜索的結(jié)果被送到屏幕,不影響原文件內(nèi)容。

grep可用于shell腳本,因?yàn)間rep通過返回一個(gè)狀態(tài)值來說明搜索的狀態(tài),如果模板搜索成功,則返回0,如果搜索不成功,則返回1,如果搜索的文件不存在,則返回2。我們利用這些返回值就可進(jìn)行一些自動(dòng)化的文本處理工作。

grep --help
匹配模式選擇:
 -E, --extended-regexp     擴(kuò)展正則表達(dá)式egrep
 -F, --fixed-strings       一個(gè)換行符分隔的字符串的集合fgrep
 -G, --basic-regexp        基本正則
 -P, --perl-regexp         調(diào)用的perl正則
 -e, --regexp=PATTERN      后面根正則模式,默認(rèn)無
 -f, --file=FILE           從文件中獲得匹配模式
 -i, --ignore-case         不區(qū)分大小寫
 -w, --word-regexp         匹配整個(gè)單詞
 -x, --line-regexp         匹配整行
 -z, --null-data           一個(gè) 0 字節(jié)的數(shù)據(jù)行,但不是空行

雜項(xiàng):
 -s, --no-messages         不顯示錯(cuò)誤信息
 -v, --invert-match        顯示不匹配的行
 -V, --version             顯示版本號(hào)
 --help                    顯示幫助信息
 --mmap                use memory-mapped input if possible

輸入控制:
 -m, --max-count=NUM       匹配的最大數(shù)
 -b, --byte-offset         打印匹配行前面打印該行所在的塊號(hào)碼。
 -n, --line-number         顯示的加上匹配所在的行號(hào)
 --line-buffered           刷新輸出每一行
 -H, --with-filename       當(dāng)搜索多個(gè)文件時(shí),顯示匹配文件名前綴
 -h, --no-filename         當(dāng)搜索多個(gè)文件時(shí),不顯示匹配文件名前綴
 --label=LABEL            print LABEL as filename for standard input
 -o, --only-matching       只顯示一行中匹配PATTERN 的部分
 -q, --quiet, --silent      不顯示任何東西
 --binary-files=TYPE   假定二進(jìn)制文件的TYPE 類型;
                                      TYPE 可以是`binary', `text', 或`without-match'
 -a, --text                匹配二進(jìn)制的東西
 -I                        不匹配二進(jìn)制的東西
 -d, --directories=ACTION  目錄操作,讀取,遞歸,跳過
 -D, --devices=ACTION      設(shè)置對(duì)設(shè)備,F(xiàn)IFO,管道的操作,讀取,跳過
 -R, -r, --recursive       遞歸調(diào)用
 --include=PATTERN     只查找匹配FILE_PATTERN 的文件
 --exclude=PATTERN     跳過匹配FILE_PATTERN 的文件和目錄
 --exclude-from=FILE   跳過所有除FILE 以外的文件
 -L, --files-without-match 匹配多個(gè)文件時(shí),顯示不匹配的文件名
 -l, --files-with-matches  匹配多個(gè)文件時(shí),顯示匹配的文件名
 -c, --count               顯示匹配了多少次
 -Z, --null                在FILE 文件最后打印空字符

文件控制:
 -B, --before-context=NUM  打印匹配本身以及前面的幾個(gè)行由NUM控制
 -A, --after-context=NUM   打印匹配本身以及隨后的幾個(gè)行由NUM控制
 -C, --context=NUM         打印匹配本身以及隨后,前面的幾個(gè)行由NUM控制
 -NUM                      根-C的用法一樣的
 --color[=WHEN],
 --colour[=WHEN]       使用標(biāo)志高亮匹配字串;
 
 -U, --binary               使用標(biāo)志高亮匹配字串;
 -u, --unix-byte-offsets   當(dāng)CR 字符不存在,報(bào)告字節(jié)偏移(MSDOS 模式)

例:
測(cè)試文件



代碼如下:
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/bin/false,aaa,bbbb,cccc,aaaaaa
DADddd:x:2:2:daemon:/sbin:/bin/false
mail:x:8:12:mail:/var/spool/mail:/bin/false
ftp:x:14:11:ftp:/home/ftp:/bin/false
&nobody:$:99:99:nobody:/:/bin/false
zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash
http:x:33:33::/srv/http:/bin/false
dbus:x:81:81:System message bus:/:/bin/false
hal:x:82:82:HAL daemon:/:/bin/false
mysql:x:89:89::/var/lib/mysql:/bin/false
aaa:x:1001:1001::/home/aaa:/bin/bash
ba:x:1002:1002::/home/zhangy:/bin/bash
test:x:1003:1003::/home/test:/bin/bash
@zhangying:*:1004:1004::/home/test:/bin/bash
policykit:x:102:1005:Po

a,匹配含有root的行


代碼如下:
[root@krlcgcms01 test]# grep root test 
root:x:0:0:root:/root:/bin/bash 

b,匹配以root開頭或者以zhang開頭的行,注意反斜杠


代碼如下:
[root@krlcgcms01 test]# cat test |grep '^\(root\|zhang\)' 
root:x:0:0:root:/root:/bin/bash 
zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash 

c,匹配以root開頭或者以zhang開頭的行,注意反斜杠,根上面一個(gè)例子一樣,-e默認(rèn)是省去的

[root@krlcgcms01 test]# cat test |grep -e '^\(root\|zhang\)'  
root:x:0:0:root:/root:/bin/bash  
zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash  
d,匹配以zhang開頭,只含有字母



代碼如下:
[root@krlcgcms01 test]# echo 'zhangying' |grep '^zhang[a-z]*$' 
zhangying 

e,匹配以bin開頭的行,用的egrep,在這里可以換成-F,-G


代碼如下:
[root@krlcgcms01 test]# cat test |grep -E '^bin' 
bin:x:1:1:bin:/bin:/bin/false,aaa,bbbb,cccc,aaaaaa 

f,在匹配的行前面加上該行在文件中,或者輸出中所在的行號(hào)


代碼如下:
[root@krlcgcms01 test]# cat test|grep -n zhangy 
7:zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash 
13:ba:x:1002:1002::/home/zhangy:/bin/bash 
15:@zhangying:*:1004:1004::/home/test:/bin/bash 

g,不匹配以bin開頭的行,并顯示行號(hào)


代碼如下:
[root@krlcgcms01 test]# cat test|grep -nv '^bin' 
root:x:0:0:root:/root:/bin/bash
DADddd:x:2:2:daemon:/sbin:/bin/false
mail:x:8:12:mail:/var/spool/mail:/bin/false
ftp:x:14:11:ftp:/home/ftp:/bin/false
&nobody:$:99:99:nobody:/:/bin/false
zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash
http:x:33:33::/srv/http:/bin/false
dbus:x:81:81:System message bus:/:/bin/false
hal:x:82:82:HAL daemon:/:/bin/false
mysql:x:89:89::/var/lib/mysql:/bin/false
aaa:x:1001:1001::/home/aaa:/bin/bash
ba:x:1002:1002::/home/zhangy:/bin/bash
test:x:1003:1003::/home/test:/bin/bash
@zhangying:*:1004:1004::/home/test:/bin/bash
policykit:x:102:1005:Po

h,顯示匹配的個(gè)數(shù),不顯示內(nèi)容


代碼如下:
[root@krlcgcms01 test]# cat test|grep -c zhang 

i,匹配system,沒有加-i沒有匹配到東西。


代碼如下:
[root@krlcgcms01 test]# grep system test 
[root@krlcgcms01 test]# grep -ni system test 
9:dbus:x:81:81:System message bus:/:/bin/false 

j,匹配zhan沒有匹配到東西,匹配zhangy能匹配到,因?yàn)樵趖est文件中,有zhangy這個(gè)單詞


代碼如下:
[root@krlcgcms01 test]# cat test|grep -w zhan 
[root@krlcgcms01 test]# cat test|grep -w zhangy 
zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash 
ba:x:1002:1002::/home/zhangy:/bin/bash 

k,在這里-x后面東西,和輸出中的整行相同時(shí),才會(huì)輸出

[root@krlcgcms01 test]# echo "aaaaaa" |grep -x aaa  
[root@krlcgcms01 test]# echo "aaaa" |grep -x aaaa  
aaaa  
l,最多只匹配一次,如果把-m 1去掉的話,會(huì)有三個(gè)



代碼如下:
[root@krlcgcms01 test]# cat test |grep -m 1 zhang 
zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash 

m,匹配行的前面顯示塊號(hào),這個(gè)塊號(hào)是干什么的,不知道,有誰知道可否告訴我一下


代碼如下:
[apacheuser@krlcgcms01 test]$ cat test |grep -b zha 
241:zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash 
480:ba:x:1002:1002::/home/zhangy:/bin/bash 
558:@zhangying:*:1004:1004::/home/test:/bin/bash 

n,多文件匹配時(shí),在匹配的行前面加上文件名


代碼如下:
[apacheuser@krlcgcms01 test]$ grep -H 'root' test test2 testbak 
test:root:x:0:0:root:/root:/bin/bash 
test2:root 
testbak:root:x:0:0:root:/root:/bin/bash
  
o,多文件匹配時(shí),在匹配的行前面不加上文件名


代碼如下:
[apacheuser@krlcgcms01 test]$ grep -h 'root' test test2 testbak 
root:x:0:0:root:/root:/bin/bash 
root 
root:x:0:0:root:/root:/bin/bash 

p,多文件匹配時(shí),顯示匹配文件的文件名


代碼如下:
[apacheuser@krlcgcms01 test]$ grep -l 'root' test test2 testbak DAta 
test 
test2 
testbak 

q,沒有-o時(shí),有一行匹配,這一行里面有3個(gè)root,加上-o后,這個(gè)3個(gè)root就出來了


代碼如下:
[apacheuser@krlcgcms01 test]$ grep 'root' test 
root:x:0:0:root:/root:/bin/bash 
[apacheuser@krlcgcms01 test]$ grep -o 'root' test 
root 
root 
root 

r,遞歸顯示匹配的內(nèi)容,在test目錄下面建個(gè)mytest目錄,copy test目錄下面的test文件到mytest下面,能看到上面的結(jié)果


代碼如下:
[root@krlcgcms01 test]# grep test -R /tmp/test/mytest 
/tmp/test/mytest/test:test:x:1003:1003::/home/test:/bin/bash 
/tmp/test/mytest/test:@zhangying:*:1004:1004::/home/test:/bin/bash 

s,顯示匹配root后面的3行


代碼如下:
[root@krlcgcms01 test]# cat test |grep -A 3 root 
root:x:0:0:root:/root:/bin/bash 
bin:x:1:1:bin:/bin:/bin/false,aaa,bbbb,cccc,aaaaaa 
daemon:x:2:2:daemon:/sbin:/bin/false 
mail:x:8:12:mail:/var/spool/mail:/bin/false 

fgrep
用法: fgrep [選項(xiàng)]... PATTERN [FILE]...
在每個(gè) FILE 或是標(biāo)準(zhǔn)輸入中查找 PATTERN。
PATTERN 是一組由斷行符分隔的定長(zhǎng)字符串。
例如: fgrep -i 'hello world' menu.h main.c

正則表達(dá)式選擇與解釋:
  -e, --regexp=PATTERN      用 PATTERN 來進(jìn)行匹配操作
  -f, --file=FILE           從 FILE 中取得 PATTERN
  -i, --ignore-case         忽略大小寫
  -w, --word-regexp         強(qiáng)制 PATTERN 僅完全匹配字詞
  -x, --line-regexp         強(qiáng)制 PATTERN 僅完全匹配一行
  -z, --null-data           一個(gè) 0 字節(jié)的數(shù)據(jù)行,但不是空行

雜項(xiàng):
  -s, --no-messages         不顯示錯(cuò)誤信息
  -v, --invert-match        選中不匹配的行
  -V, --version             顯示版本信息并退出
      --help                顯示此幫助并退出
      --mmap                忽略向后兼容性

Output control:
  -m, --max-count=NUM      匹配的最大數(shù)
  -b, --byte-offset         打印匹配行前面打印該行所在的塊號(hào)碼
  -n, --line-number         顯示的加上匹配所在的行號(hào)
      --line-buffered         刷新輸出每一行
  -H, --with-filename       當(dāng)搜索多個(gè)文件時(shí),顯示匹配文件名前綴
  -h, --no-filename         當(dāng)搜索多個(gè)文件時(shí),不顯示匹配文件名前綴
      --label=LABEL         use LABEL as the standard input file name prefix
  -o, --only-matching       只顯示一行中匹配PATTERN 的部分
  -q, --quiet, --silent     不顯示所有輸出
      --binary-files=TYPE   假定二進(jìn)制文件的TYPE 類型;
                            TYPE 可以是`binary', `text', 或`without-match'
  -a, --text                等同于 --binary-files=text
  -I                        等同于 --binary-files=without-match
  -d, --directories=ACTION  操作目錄的方式;
                            ACTION 可以是`read', `recurse',或`skip'
  -D, --devices=ACTION      操作設(shè)備、先入先出隊(duì)列、套接字的方式;
                            ACTION 可以是`read'或`skip'
  -R, -r, --recursive       等同于 --directories=recurse
      --include=FILE_PATTERN  只查找匹配FILE_PATTERN 的文件
      --exclude=FILE_PATTERN  跳過匹配FILE_PATTERN 的文件和目錄
      --exclude-from=FILE   跳過所有除FILE 以外的文件
      --exclude-dir=PATTERN  跳過所有匹配PATTERN 的目錄。
  -L, --files-without-match  只打印不匹配FILEs 的文件名
  -l, --files-with-matches  只打印匹配FILES 的文件名
  -c, --count               只打印每個(gè)FILE 中的匹配行數(shù)目
  -T, --initial-tab         行首tabs 分隔(如有必要)
  -Z, --null                在FILE 文件最后打印空字符

文件控制:
  -B, --before-context=NUM  打印以文本起始的NUM 行
  -A, --after-context=NUM   打印以文本結(jié)尾的NUM 行
  -C, --context=NUM         打印輸出文本NUM 行
  -NUM                      等同于 --context=NUM
      --color[=WHEN],
      --colour[=WHEN]       使用標(biāo)志高亮匹配字串;
                            WHEN 可以是`always', `never'或`auto'
  -U, --binary              不要清除行尾的CR 字符(MSDOS 模式)
  -u, --unix-byte-offsets   當(dāng)CR 字符不存在,報(bào)告字節(jié)偏移(MSDOS 模式)

‘fgrep’已不再使用了;請(qǐng)用 ‘grep -F’代替。
不帶 FILE 參數(shù),或是 FILE 為 -,將讀取標(biāo)準(zhǔn)輸入。如果少于兩個(gè) FILE 參數(shù)
就要默認(rèn)使用 -h 參數(shù)。如果選中任意一行,那退出狀態(tài)為 0,否則為 1;
如果有錯(cuò)誤產(chǎn)生,且未指定 -q 參數(shù),那退出狀態(tài)為 2。
例:

代碼如下:
[root@linux test]# cat abc.sh |fgrep a #匹配含有a的行

關(guān)鍵字:Linux、命令、grep、fgrep
分享到:

頂部 】 【 關(guān)閉
版權(quán)所有:佛山思海電腦網(wǎng)絡(luò)有限公司 ©1998-2024 All Rights Reserved.
聯(lián)系電話:(0757)22630313、22633833
中華人民共和國(guó)增值電信業(yè)務(wù)經(jīng)營(yíng)許可證: 粵B1.B2-20030321 備案號(hào):粵B2-20030321-1
網(wǎng)站公安備案編號(hào):44060602000007 交互式欄目專項(xiàng)備案編號(hào):200303DD003  
察察 工商 網(wǎng)安 舉報(bào)有獎(jiǎng)  警警  手機(jī)打開網(wǎng)站