linux文本查找命令 linux查找文本中的指定內(nèi)容

Linux下find命令和grep命令查找文件

在使用linux時(shí),經(jīng)常需要進(jìn)行文件查找。其中查找的命令主要有find和grep。

創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站制作、網(wǎng)站建設(shè)與策劃設(shè)計(jì),白河網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:白河等地區(qū)。白河做網(wǎng)站價(jià)格咨詢:028-86922220

兩個(gè)命令是有區(qū)的。

(1)find命令是根據(jù)文件的屬性進(jìn)行查找,如文件名,文件大小,所有者,所屬組,是否為空,訪問時(shí)間,修改時(shí)間等。

(2)grep是根據(jù)文件的內(nèi)容進(jìn)行查找,會(huì)對文件的每一行按照給定的模式(patter)進(jìn)行匹配查找。

一.find命令

基本格式:find path expression

1.按照文件名查找

(1)find / -name httpd.conf

在根目錄下查找文件httpd.conf,表示在整個(gè)硬盤查找

(2)find /etc -name httpd.conf

在/etc目錄下文件httpd.conf

(3)find /etc -name ' srm '

使用通配符*(0或者任意多個(gè))。表示在/etc目錄下查找文件名中含有字符串‘srm’的文件

(4)find . -name 'srm*'

表示當(dāng)前目錄下查找文件名開頭是字符串‘srm’的文件

Linux下Grep命令的詳細(xì)使用方法?

在linux中g(shù)rep命令是非常有用的,它和管道(|)配合使用,非常強(qiáng)大,用于搜索文本文件.如果想要在幾個(gè)文本文件中查找一字符串,可以使用‘grep’命令?!甮rep’在文本中搜索指定的字符串。

假設(shè)您正在‘/usr/src/linux/Documentation’目錄下搜索帶字符串‘magic’的文件:

$ grep magic /usr/src/linux/Documentation/*

sysrq.txt:* How do I enable the magic SysRQ key?

sysrq.txt:* How do I use the magic SysRQ key?

其中文件‘sysrp.txt’包含該字符串,討論的是 SysRQ 的功能。

默認(rèn)情況下,‘grep’只搜索當(dāng)前目錄。如果此目錄下有許多子目錄,‘grep’會(huì)以如下形式列出:

grep: sound: Is a directory

這可能會(huì)使‘grep’的輸出難于閱讀。這里有兩種解決的辦法:

明確要求搜索子目錄:grep -r

或忽略子目錄:grep -d skip

當(dāng)然,如果預(yù)料到有許多輸出,您可以通過 管道 將其轉(zhuǎn)到‘less’上閱讀:

$ grep magic /usr/src/linux/Documentation/* | less

這樣,您就可以更方便地閱讀。

有一點(diǎn)要注意,您必需提供一個(gè)文件過濾方式(搜索全部文件的話用 *)。如果您忘了,‘grep’會(huì)一直等著,直到該程序被中斷。如果您遇到了這樣的情況,按 ,然后再試。

下面是一些有意思的命令行參數(shù):

grep -i pattern files :不區(qū)分大小寫地搜索。默認(rèn)情況區(qū)分大小寫,

grep -l pattern files :只列出匹配的文件名,

grep -L pattern files :列出不匹配的文件名,

grep -w pattern files :只匹配整個(gè)單詞,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’),

grep -C number pattern files :匹配的上下文分別顯示[number]行,

grep pattern1 | pattern2 files :顯示匹配 pattern1 或 pattern2 的行,

grep pattern1 files | grep pattern2 :顯示既匹配 pattern1 又匹配 pattern2 的行。

這里還有些用于搜索的特殊符號(hào):

\ 分別標(biāo)注單詞的開始與結(jié)尾。

例如:

grep man * 會(huì)匹配 ‘Batman’、‘manic’、‘man’等,

grep '\grep '\' 只匹配‘man’,而不是‘Batman’或‘manic’等其他的字符串。

'^':指匹配的字符串在行首,

'$':指匹配的字符串在行尾,

如果您不習(xí)慣命令行參數(shù),可以試試圖形界面的‘grep’,如 reXgrep 。這個(gè)軟件提供 AND、OR、NOT 等語法,還有漂亮的按鈕 :-) 。如果您只是需要更清楚的輸出,不妨試試 fungrep 。

Linux正則表達(dá)式

一.linux文本查找命令

在說linux正規(guī)表達(dá)式之前,還介紹下linux中查找文本文件常用的三個(gè)命令:

1.grep : 最早的文本匹配程序,使用POSIX定義的基本正則表達(dá)式(BRE)來匹配文本。

2.egrep : 擴(kuò)展式grep,其使用擴(kuò)展式正規(guī)表達(dá)式(ERE)來匹配文本。

3.fgrep : 快速grep,這個(gè)版本匹配固定字符串而非正則表達(dá)式。并且是唯一可以并行匹配多個(gè)字符串的版本。

如下簡單的介紹grep命令:

語法格式:

grep [options ...] pattern-spec [files ...]

用途:

匹配一個(gè)或多個(gè)模式的文本行。

options:

-E : 使用擴(kuò)展正則表達(dá)式進(jìn)行匹配, grep -E 或取代 egrep 命令。

-F : 使用固定字符串進(jìn)行匹配, grep -F 或取代傳統(tǒng)的fgrep命令。

-e : 通常第一個(gè)非選項(xiàng)的參數(shù)認(rèn)為是要匹配的模式,也可以同時(shí)提供多個(gè)模式,只要將其放入單引號(hào),并用換行字符分隔他們。

模式以減號(hào)開頭時(shí),為防止混淆其為選項(xiàng),-e選項(xiàng)說明其后的參數(shù)為模式,即使他以減號(hào)開頭。

-f : 從pat-file文件讀取模式作為匹配。

-i : 模式匹配時(shí)忽略大小寫差異。

-l : 列出匹配模式的文件名稱,而不是打印匹配的行。

-q : 靜默的,如果匹配成功,不將匹配的行輸出到標(biāo)準(zhǔn)輸出;否則即是不成功。

-s : 不顯示錯(cuò)誤信息,通常與-q并用。

-v : 顯示不匹配模式的行。

說明:可以同時(shí)查找多個(gè)文件中的內(nèi)容,當(dāng)指定多個(gè)文件時(shí),每個(gè)顯示出的文件行前會(huì)有文件名加一個(gè)冒號(hào)標(biāo)識(shí)其來自哪個(gè)文件。

可以使用多個(gè)-e 或 -f 選項(xiàng),建立要查找的模式列表。

二.正則表達(dá)式簡要介紹

1.正則表達(dá)式的組成

(1).一般字符:沒有特殊意義的字符

(2).特殊字符(meta字符):元字符,有在正則表達(dá)式中有特殊意義

2.如下講下正則表達(dá)式中的常見meta字符

(1).POSIX BRE與ERE中都有的meta字符:

\?? :??通常用于打開或關(guān)閉后續(xù)字符的特殊含義,如\(...\)與\{...\}

.? ?:?? 匹配任何單個(gè)字符(除NUL)

*? :?? 匹配其前的任何數(shù)目或沒有的單個(gè)字符,例:?.?表示任一字符, 則 .* 匹配任一字符的任意長度

^? :?? 匹配緊接著的正則表達(dá)式,BRE中僅在正則表達(dá)式的開頭有特殊的含義,ERE中在任何位置都有特殊含義

$? :?? 匹配前面的正則表達(dá)式,在字符串或者行結(jié)尾處。BRE中僅在正則表達(dá)式的結(jié)尾處有特殊的含義,ERE中在任何位置都有特殊含義

[]? :?? 匹配方括號(hào)內(nèi)的任一字符,其中可用連字符(-)指的連續(xù)字符的范圍;^符號(hào)苦出現(xiàn)在方括號(hào)的第一個(gè)位置,則表示匹配不在列表中的任一字符,

(2).POSIX BRE中才有的字符:

\{n,m\} : 區(qū)間表達(dá)式,匹配在它前面的單個(gè)字符重現(xiàn)的次數(shù)區(qū)別。\{n\}指重現(xiàn)n次;\{n,m\}指重現(xiàn)n至m次;

\( \) : 保留空間,可以將最多9個(gè)獨(dú)立的子模式存儲(chǔ)在單個(gè)模式中。如\(ab\).*\1 : 指匹配ab組合的兩次重現(xiàn),中間可存在任意數(shù)目的字符。

\n : 重復(fù)在\(與\)方括號(hào)內(nèi)第n個(gè)子模式至此點(diǎn)的模式。

(3).POSIX ERE中才有的字符:

{n,m} : 與BRE的\{n,m\}功能相同

+ : 匹配前面正則表達(dá)式的一個(gè)或多個(gè)擴(kuò)展

? : 匹配前面正則表達(dá)式的零個(gè)或一個(gè)擴(kuò)展

| : 匹配|符號(hào)前或后的正則表達(dá)式

( ) : 匹配方括號(hào)括起來的正則表達(dá)式群

(4).?方括號(hào)([])表達(dá)式

4.1.字符集? [:? :]

標(biāo)識(shí)字符集,有如下幾種:

[::alnum] : 數(shù)字字符[:digit:] : 數(shù)字字符[:punct:] : 標(biāo)點(diǎn)符號(hào)字符

[:alpha:] : 字母字符[:graph:] : 非空格字符[:space:] :?空格字符

[:blank:] : 空格與定位字符[:lower:] : 小寫字母字符[:upper:] : 大寫字母字符

[:cntrl:] : 控制字符[:print:] : 可顯示的字符[:xdigit:] : 16進(jìn)制數(shù)字

4.2.排序符號(hào)

指將多個(gè)字符視為一個(gè)符號(hào),如[.ch.]即將ch視為一個(gè)符號(hào)

4.3.等價(jià)字符

認(rèn)為多個(gè)字符相等,如[=e=]在法文的locale里,可匹配于多種與e相似的字符,此處不再列出。

說明:這三種構(gòu)造除其自身的方括號(hào)之外,還必須使用額外的方括號(hào)括起來。

例 : [[:alpha:]!] : 匹配任一英文字母或感嘆號(hào)。

[[.ch.] : 匹配ch排序元素,而不匹配單獨(dú)的字母c或h.

3.簡單正規(guī)表達(dá)式匹配案例

china? :?匹配此行中任意位置有china字符的行

^china?: 匹配此以china開關(guān)的行

china$ : 匹配以china結(jié)尾的行

^china$ : 匹配僅有china五個(gè)字符的行

[Cc]hina : 匹配含有China或china的行

Ch.na : 匹配包含Ch兩字母并且其后緊跟一個(gè)任意字符之后又有na兩個(gè)字符的行

Ch.*na : 匹配一行中含Ch字符,并且其后跟0個(gè)或者多個(gè)字符,再繼續(xù)跟na兩字符

二.實(shí)例

如下通過常用實(shí)例來學(xué)習(xí)BRE和ERE匹配,源文件url.txt內(nèi)容如下:

baidu.com

baidu

1.url匹配

匹配以http或者h(yuǎn)ttps開頭,并且其后為:并且含有.的串

BRE匹配:

grep '^https\{0,1\}.*\..*' url.txt

ERE匹配:

grep -E?'^https?.*\..*' url.txt

匹配結(jié)果如下:

2.Email匹配

示例文件內(nèi)容為:

hfutwyy@qq.com

aaaa@

aaa@.com

aaa@gmail.com

@@baidu.com

匹配以字母數(shù)字或者下劃線開頭的多個(gè)字符,其后有一個(gè)@之后有多個(gè)字母數(shù)字或者下劃線,其中有一個(gè).號(hào)

grep '^[[:alpha:][:digit:]_]*@[[:alpha:][:digit:]]*\..*' email.txt

匹配結(jié)果:

hfutwyy@qq.com

aaa@.com

aaa@gmail.com

轉(zhuǎn)自 嘉為教育-rhce認(rèn)證_rhce培訓(xùn)_linux培訓(xùn)_linux認(rèn)證_linux考證

linux查看文件內(nèi)容命令

常用的7個(gè)Linux文件內(nèi)容查看命令:

1.cat由第一行開始顯示文件內(nèi)容

用法:

cat-A 相當(dāng)于-vET的整合選項(xiàng),可列出一些特殊字符而不是空白;

cat-b 列出行號(hào),僅針對非空白行做行號(hào)顯示,空白行不標(biāo)行號(hào);

cat-E 將結(jié)尾的斷行字節(jié)$顯示出來;

cat-n 列印出行號(hào),連同空白行也會(huì)有行號(hào),與-b的選項(xiàng)不同;

cat-T 將[tab]按鍵以^I顯示出來;

cat-v 列出一些看不出來的特殊字符;

2.tac 由最后一行開始顯示文件內(nèi)容

tac-b 在行前而非行尾添加分隔標(biāo)志;

tac-r 將分隔標(biāo)志視作正則表達(dá)式來解析;

tac-s 使用指定字符串代替換行作為分隔標(biāo)志;

3.nl 顯示行號(hào)

nl-b a 無論是否為空行,均列出行號(hào);

nl-b t 空行不列出行號(hào);

nl-n ln 行號(hào)在熒幕的最左方顯示;

nl-n rn 行號(hào)在自己欄位的最右方顯示,且不加0;

nl-n rz 行號(hào)在自己欄位的最右方顯示,且加0;

nl-w 行號(hào)欄位的占用的位數(shù);

4.more 一頁一頁的顯示文件內(nèi)容

在more程序運(yùn)行過程中,可以按以下鍵:

空白鍵(space):代表向下翻一頁;

Enter:代表向下翻『一行』;

/字串:代表在這個(gè)顯示的內(nèi)容當(dāng)中,向下搜尋『字串』這個(gè)關(guān)鍵字;

:f:立刻顯示出檔名以及目前顯示的行數(shù);

q:代表立刻離開more,不再顯示該文件內(nèi)容。

b或[ctrl]-b:代表往回翻頁,不過這動(dòng)作只對文件有用,對管線無用。

5.less與more類似,但是比more更好的是,他可以往前翻頁

less運(yùn)行時(shí)可以輸入的命令有:

空白鍵:向下翻動(dòng)一頁;

[pagedown]:向下翻動(dòng)一頁;

[pageup]:向上翻動(dòng)一頁;

/字串:向下搜尋『字串』的功能;

?字串:向上搜尋『字串』的功能;

n:重復(fù)前一個(gè)搜尋(與/或?有關(guān)!);

N:反向的重復(fù)前一個(gè)搜尋(與/或?有關(guān)!);

q:離開less這個(gè)程序;

6.head 顯示前幾行

語法:

head-n 后面接數(shù)字,代表顯示行數(shù);

7.tail 顯示后幾行

tail-n 后面接數(shù)字,代表顯示行數(shù);

tail-f 表示持續(xù)偵測后面所接的檔名,要等到按下[ctrl]-c才會(huì)結(jié)束tail的偵測;

文章題目:linux文本查找命令 linux查找文本中的指定內(nèi)容
標(biāo)題網(wǎng)址:http://muchs.cn/article34/doshose.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT網(wǎng)站建設(shè)、網(wǎng)站策劃、網(wǎng)站營銷、軟件開發(fā)、全網(wǎng)營銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計(jì)公司