成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

linux查關(guān)鍵字命令 linux搜索關(guān)鍵字命令

linux grep命令詳解

簡(jiǎn)介

創(chuàng)新互聯(lián)建站成立與2013年,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元咸豐做網(wǎng)站,已為上家服務(wù),為咸豐各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108

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常用用法

[root@www ~]#grep[-acinv] [--color=auto]'搜尋字符串' filename

選項(xiàng)與參數(shù):-a :將 binary 文件以 text 文件的方式搜尋數(shù)據(jù)-c :計(jì)算找到'搜尋字符串' 的次數(shù)-i :忽略大小寫的不同,所以大小寫視為相同-n :順便輸出行號(hào)-v :反向選擇,亦即顯示出沒有'搜尋字符串' 內(nèi)容的那一行!--color=auto :可以將找到的關(guān)鍵詞部分加上顏色的顯示喔!

將/etc/passwd,有出現(xiàn) root 的行取出來

# greproot /etc/passwdroot:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

或# cat/etc/passwd|grep root

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

將/etc/passwd,有出現(xiàn) root 的行取出來,同時(shí)顯示這些行在/etc/passwd的行號(hào)

#grep-n root /etc/passwd1:root:x:0:0:root:/root:/bin/bash30:operator:x:11:0:operator:/root:/sbin/nologin

在關(guān)鍵字的顯示方面,grep 可以使用 --color=auto 來將關(guān)鍵字部分使用顏色顯示。 這可是個(gè)很不錯(cuò)的功能??!但是如果每次使用 grep 都得要自行加上 --color=auto 又顯的很麻煩~ 此時(shí)那個(gè)好用的 alias 就得來處理一下啦!你可以在 ~/.bashrc 內(nèi)加上這行:『alias grep='grep --color=auto'』再以『 source ~/.bashrc 』來立即生效即可喔! 這樣每次運(yùn)行 grep 他都會(huì)自動(dòng)幫你加上顏色顯示啦

將/etc/passwd,將沒有出現(xiàn) root 的行取出來

#grep-v root /etc/passwdroot:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

將/etc/passwd,將沒有出現(xiàn) root 和nologin的行取出來

#grep-v root /etc/passwd|grep-v nologin

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

用 dmesg 列出核心信息,再以 grep 找出內(nèi)含 eth 那行,要將捉到的關(guān)鍵字顯色,且加上行號(hào)來表示:

[root@www ~]# dmesg |grep-n --color=auto'eth'247:eth0: RealTek RTL8139 at0xee846000,00:90:cc:a6:34:84, IRQ10248:eth0: Identified8139chip type'RTL-8139C'294:eth0: link up, 100Mbps, full-duplex, lpa0xC5E1305:eth0: no IPv6 routers present

# 你會(huì)發(fā)現(xiàn)除了 eth 會(huì)有特殊顏色來表示之外,最前面還有行號(hào)喔!

在關(guān)鍵字的顯示方面,grep 可以使用 --color=auto 來將關(guān)鍵字部分使用顏色顯示。 這可是個(gè)很不錯(cuò)的功能啊!但是如果每次使用 grep 都得要自行加上 --color=auto 又顯的很麻煩~ 此時(shí)那個(gè)好用的 alias 就得來處理一下啦!你可以在 ~/.bashrc 內(nèi)加上這行:『alias grep='grep --color=auto'』再以『 source ~/.bashrc 』來立即生效即可喔! 這樣每次運(yùn)行 grep 他都會(huì)自動(dòng)幫你加上顏色顯示啦

用 dmesg 列出核心信息,再以 grep 找出內(nèi)含 eth 那行,在關(guān)鍵字所在行的前兩行與后三行也一起捉出來顯示

[root@www ~]# dmesg |grep-n -A3 -B2 --color=auto'eth'245-PCI: setting IRQ10as level-triggered246-ACPI: PCI Interrupt0000:00:0e.0[A] - Link [LNKB] ...247:eth0: RealTek RTL8139 at0xee846000,00:90:cc:a6:34:84, IRQ10248:eth0: Identified8139chip type'RTL-8139C'249-input: PC Speaker as /class/input/input2250-ACPI: PCI Interrupt0000:00:01.4[B] - Link [LNKB] ...251-hdb: ATAPI 48X DVD-ROM DVD-R-RAM CD-R/RW drive, 2048kB Cache, UDMA(66)

# 如上所示,你會(huì)發(fā)現(xiàn)關(guān)鍵字 247所在的前兩行及248 后三行也都被顯示出來!

# 這樣可以讓你將關(guān)鍵字前后數(shù)據(jù)捉出來進(jìn)行分析啦!

根據(jù)文件內(nèi)容遞歸查找目錄

#grep‘energywise’ *? ? ? ? ? #在當(dāng)前目錄搜索帶'energywise'行的文件

# grep-r ‘energywise’ *? ? ? ? #在當(dāng)前目錄及其子目錄下搜索'energywise'行的文件

# grep-l -r ‘energywise’ *? ? #在當(dāng)前目錄及其子目錄下搜索'energywise'行的文件,但是不顯示匹配的行,只顯示匹配的文件

這幾個(gè)命令很使用,是查找文件的利器。

grep與正規(guī)表達(dá)式

字符類

字符類的搜索:如果我想要搜尋 test 或 taste 這兩個(gè)單字時(shí),可以發(fā)現(xiàn)到,其實(shí)她們有共通的 't?st' 存在~這個(gè)時(shí)候,我可以這樣來搜尋:

[root@www ~]#grep-n't[ae]st' regular_express.txt8:I can't finish the test.9:Oh! The soup taste good.

其實(shí) [] 里面不論有幾個(gè)字節(jié),他都謹(jǐn)代表某『一個(gè)』字節(jié), 所以,上面的例子說明了,我需要的字串是『tast』或『test』兩個(gè)字串而已!

字符類的反向選擇 [^] :如果想要搜索到有 oo 的行,但不想要 oo 前面有 g,如下

[root@www ~]#grep-n'[^g]oo' regular_express.txt2:apple is my favorite food.3:Football game is not use feet only.18:google is the best toolsfor search keyword.19:goooooogle yes!

第 2,3 行沒有疑問,因?yàn)?foo 與 Foo 均可被接受!

但是第 18 行明明有 google 的 goo 啊~別忘記了,因?yàn)樵撔泻竺娉霈F(xiàn)了 tool 的 too 啊!所以該行也被列出來~ 也就是說, 18 行里面雖然出現(xiàn)了我們所不要的項(xiàng)目 (goo) 但是由於有需要的項(xiàng)目 (too) , 因此,是符合字串搜尋的喔!

至於第 19 行,同樣的,因?yàn)?goooooogle 里面的 oo 前面可能是 o ,例如: go(ooo)oogle ,所以,這一行也是符合需求的!

字符類的連續(xù):再來,假設(shè)我 oo 前面不想要有小寫字節(jié),所以,我可以這樣寫 [^abcd....z]oo , 但是這樣似乎不怎么方便,由於小寫字節(jié)的 ASCII 上編碼的順序是連續(xù)的, 因此,我們可以將之簡(jiǎn)化為底下這樣:

[root@www ~]#grep-n'[^a-z]oo' regular_express.txt3:Football game is not use feet only.

也就是說,當(dāng)我們?cè)谝唤M集合字節(jié)中,如果該字節(jié)組是連續(xù)的,例如大寫英文/小寫英文/數(shù)字等等, 就可以使用[a-z],[A-Z],[0-9]等方式來書寫,那么如果我們的要求字串是數(shù)字與英文呢? 呵呵!就將他全部寫在一起,變成:[a-zA-Z0-9]。

我們要取得有數(shù)字的那一行,就這樣:

[root@www ~]#grep-n'[0-9]' regular_express.txt5:However, this dress is about $3183 dollars.15:You are the best is mean you are the no.1.

行首與行尾字節(jié) ^ $

行首字符:如果我想要讓 the 只在行首列出呢? 這個(gè)時(shí)候就得要使用定位字節(jié)了!我們可以這樣做:

[root@www ~]#grep-n'^the' regular_express.txt12:the symbol'*'is represented as start.

此時(shí),就只剩下第 12 行,因?yàn)橹挥械?12 行的行首是 the 開頭啊~此外, 如果我想要開頭是小寫字節(jié)的那一行就列出呢?可以這樣:

[root@www ~]#grep-n'^[a-z]' regular_express.txt2:apple is my favorite food.4:this dress doesn't fit me.10:motorcycle is cheap than car.12:the symbol'*' is represented as start.18:google is the best toolsfor search keyword.19:goooooogle yes!20:go! go! Let's go.

如果我不想要開頭是英文字母,則可以是這樣:

[root@www ~]#grep-n'^[^a-zA-Z]' regular_express.txt1:"Open Source" is a good mechanism to develop programs.21:# I am VBird

^ 符號(hào),在字符類符號(hào)(括號(hào)[])之內(nèi)與之外是不同的! 在 [] 內(nèi)代表『反向選擇』,在 [] 之外則代表定位在行首的意義!

那如果我想要找出來,行尾結(jié)束為小數(shù)點(diǎn) (.) 的那一行:

[root@www ~]#grep-n'\.$' regular_express.txt1:"Open Source" is a good mechanism to develop programs.2:apple is my favorite food.3:Football game is not use feet only.4:this dress doesn't fit me.10:motorcycle is cheap than car.11:This window isclear.12:the symbol'*' is represented as start.15:You are the best is mean you are the no.1.16:The world is the same with"glad".17:I like dog.18:google is the best toolsfor search keyword.20:go! go! Let's go.

特別注意到,因?yàn)樾?shù)點(diǎn)具有其他意義(底下會(huì)介紹),所以必須要使用轉(zhuǎn)義字符(\)來加以解除其特殊意義!

找出空白行:

[root@www ~]#grep-n'^$' regular_express.txt22:

因?yàn)橹挥行惺赘形?(^$),所以,這樣就可以找出空白行啦!

任意一個(gè)字節(jié) . 與重復(fù)字節(jié) *

這兩個(gè)符號(hào)在正則表達(dá)式的意義如下:

. (小數(shù)點(diǎn)):代表『一定有一個(gè)任意字節(jié)』的意思;* (星號(hào)):代表『重復(fù)前一個(gè)字符,0到無窮多次』的意思,為組合形態(tài)

假設(shè)我需要找出 g??d 的字串,亦即共有四個(gè)字節(jié), 起頭是 g 而結(jié)束是 d ,我可以這樣做:

[root@www ~]#grep-n'g..d' regular_express.txt1:"Open Source" is a good mechanism to develop programs.9:Oh! The soup taste good.16:The world is the same with"glad".

因?yàn)閺?qiáng)調(diào) g 與 d 之間一定要存在兩個(gè)字節(jié),因此,第 13 行的 god 與第 14 行的 gd 就不會(huì)被列出來啦!

如果我想要列出有 oo, ooo, oooo 等等的數(shù)據(jù), 也就是說,至少要有兩個(gè)(含) o 以上,該如何是好?

因?yàn)?* 代表的是『重復(fù) 0 個(gè)或多個(gè)前面的 RE 字符』的意義, 因此,『o*』代表的是:『擁有空字節(jié)或一個(gè) o 以上的字節(jié)』,因此,『 grep -n 'o*' regular_express.txt 』將會(huì)把所有的數(shù)據(jù)都列印出來終端上!

當(dāng)我們需要『至少兩個(gè) o 以上的字串』時(shí),就需要 ooo* ,亦即是:

[root@www ~]#grep-n'ooo*' regular_express.txt1:"Open Source" is a good mechanism to develop programs.2:apple is my favorite food.3:Football game is not use feet only.9:Oh! The soup taste good.18:google is the best toolsfor search keyword.19:goooooogle yes!

如果我想要字串開頭與結(jié)尾都是 g,但是兩個(gè) g 之間僅能存在至少一個(gè) o ,亦即是 gog, goog, gooog.... 等等,那該如何?

[root@www ~]#grep-n'goo*g' regular_express.txt18:google is the best toolsfor search keyword.19:goooooogle yes!

如果我想要找出 g 開頭與 g 結(jié)尾的行,當(dāng)中的字符可有可無

[root@www ~]#grep-n'g.*g' regular_express.txt1:"Open Source" is a good mechanism to develop programs.14:The gd software is a libraryfor drafting programs.18:google is the best toolsfor search keyword.19:goooooogle yes!20:go! go! Let's go.

因?yàn)槭谴?g 開頭與 g 結(jié)尾,中間任意字節(jié)均可接受,所以,第 1, 14, 20 行是可接受的喔! 這個(gè) .* 的 RE 表示任意字符是很常見的.

如果我想要找出『任意數(shù)字』的行?因?yàn)閮H有數(shù)字,所以就成為:

[root@www ~]#grep-n'[0-9][0-9]*' regular_express.txt5:However, this dress is about $3183 dollars.15:You are the best is mean you are the no.1.

限定連續(xù) RE 字符范圍 {}

我們可以利用 . 與 RE 字符及 * 來配置 0 個(gè)到無限多個(gè)重復(fù)字節(jié), 那如果我想要限制一個(gè)范圍區(qū)間內(nèi)的重復(fù)字節(jié)數(shù)呢?

舉例來說,我想要找出兩個(gè)到五個(gè) o 的連續(xù)字串,該如何作?這時(shí)候就得要使用到限定范圍的字符 {} 了。 但因?yàn)?{ 與 } 的符號(hào)在 shell 是有特殊意義的,因此, 我們必須要使用字符 ? \ 來讓他失去特殊意義才行。 至於 {} 的語法是這樣的,假設(shè)我要找到兩個(gè) o 的字串,可以是:

[root@www ~]#grep-n'o\{2\}' regular_express.txt1:"Open Source" is a good mechanism to develop programs.2:apple is my favorite food.3:Football game is not use feet only.9:Oh! The soup taste good.18:google is the best toolsfor search ke19:goooooogle yes!

假設(shè)我們要找出 g 后面接 2 到 5 個(gè) o ,然后再接一個(gè) g 的字串,他會(huì)是這樣:

[root@www ~]#grep-n'go\{2,5\}g' regular_express.txt18:google is the best toolsforsearch keyword.

如果我想要的是 2 個(gè) o 以上的 goooo....g 呢?除了可以是 gooo*g ,也可以是:

[root@www ~]#grep-n'go\{2,\}g' regular_express.txt18:google is the best toolsfor search keyword.19:goooooogle yes!

擴(kuò)展grep(grep -E 或者 egrep):

使用擴(kuò)展grep的主要好處是增加了額外的正則表達(dá)式元字符集。

打印所有包含NW或EA的行。如果不是使用egrep,而是grep,將不會(huì)有結(jié)果查出。

#egrep'NW|EA' testfile? ?

northwest? ? ? NW? ? ? Charles Main? ? ? ? 3.0.98334? ? eastern? ? ? ? EA? ? ? TB Savage? ? ? ? ? 4.4.84520

對(duì)于標(biāo)準(zhǔn)grep,如果在擴(kuò)展元字符前面加\,grep會(huì)自動(dòng)啟用擴(kuò)展選項(xiàng)-E。

#grep'NW\|EA' testfile

northwest? ? ? NW? ? ? Charles Main? ? ? ? 3.0.98334eastern? ? ? ? EA? ? ? TB Savage? ? ? ? ? 4.4.84520

搜索所有包含一個(gè)或多個(gè)3的行。

#egrep'3+' testfile

# grep-E'3+' testfile

# grep'3\+' testfile? ? ? ?

#這3條命令將會(huì)

northwest? ? ? NW? ? ? Charles Main? ? ? ? ? 3.0.98334western? ? ? ? WE? ? ? Sharon Gray? ? ? ? ? 5.3.97523northeast? ? ? NE? ? ? AM Main Jr.? ? ? ? ? 5.1.94313central? ? ? ? CT? ? ? Ann Stephens? ? ? ? ? 5.7.94513

搜索所有包含0個(gè)或1個(gè)小數(shù)點(diǎn)字符的行。

#egrep'2\.?[0-9]' testfile

# grep-E'2\.?[0-9]' testfile

# grep'2\.\?[0-9]' testfile

#首先含有2字符,其后緊跟著0個(gè)或1個(gè)點(diǎn),后面再是0和9之間的數(shù)字。

western? ? ? ? WE? ? ? Sharon Gray? ? ? ? ? 5.3.97523southwest? ? ? SW? ? ? Lewis Dalsass? ? ? ? 2.7.8218eastern? ? ? ? EA? ? ? TB Savage? ? ? ? ? ? 4.4.84520

搜索一個(gè)或者多個(gè)連續(xù)的no的行。

#egrep'(no)+' testfile

# grep-E'(no)+' testfile

# grep'\(no\)\+' testfile? #3個(gè)命令返回相同結(jié)果,

northwest? ? ? NW? ? ? Charles Main? ? ? ? 3.0.98334northeast? ? ? NE? ? ? AM Main Jr.? ? ? ? 5.1.94313north? ? ? ? ? NO? ? ? Margot Weber? ? ? ? 4.5.8959

不使用正則表達(dá)式

fgrep 查詢速度比grep命令快,但是不夠靈活:它只能找固定的文本,而不是規(guī)則表達(dá)式。

如果你想在一個(gè)文件或者輸出中找到包含星號(hào)字符的行

fgrep? '*' /etc/profile

for i in /etc/profile.d/*.sh ; do

grep -F '*' /etc/profile

for i in /etc/profile.d/*.sh ; do

linux查找內(nèi)容命令

find,用于在文件樹中查找文件并作相應(yīng)的處理

-name:按照文件名查找文件

-perm:按照文件權(quán)限查找文件

-user:按照文件屬主來查找文件

-size:按照指定的文件大小查找文件【+n:大于,-n:小于,n:等于】

-group:按照文件所屬的組來查找文件

-mtime-n+n:按照文件更改時(shí)間來查找文件,-n表示n天之內(nèi),+n表示n天以前

-newer file1 file2:查找更改時(shí)間在file1和file2之間的文件

例如:

find -mtime -2:查找48小時(shí)修改過的文件

find -name ".log":查找當(dāng)前目錄以".log"結(jié)尾的文件

find /opt/soft/test -perm 777:查找指定目錄下權(quán)限為777的文件

find -type f -name "*.log":查找當(dāng)前目錄下以".log"結(jié)尾的普通文件

find -type d | sort:查找當(dāng)前所有目標(biāo)目錄并排序

find /home/wansw -size +20M:查找大于20M的文件

locate指令,可以快速定位文件路徑,利用事先建立的系統(tǒng)中的所有文件名稱和路徑的locate數(shù)據(jù)庫,無需遍歷整個(gè)文件系統(tǒng),查詢速度較快,為了保證查詢準(zhǔn)確性,需要定期更新?!禠inux就該這么學(xué)》

updatedb:第一次運(yùn)行前,創(chuàng)建locate數(shù)據(jù)庫

grep,用于過濾/搜索指定字符串。可以使用正則表達(dá)式,能配合多種命令使用。

用法:grep 【選項(xiàng)】 查找內(nèi)容 源文件

-A:顯示符合的行及之后的內(nèi)容

-B:顯示符合的行及之前的內(nèi)容

-C:顯示符合的行及前后的內(nèi)容

-c:計(jì)算符合的行數(shù)目

-n:顯示匹配行和行號(hào)

-i:忽略大小寫

規(guī)則表達(dá)式

:'grep'表示匹配所有以grep開頭的行

'表示匹配所有以grep結(jié)尾的行

.:'gr.p'表示匹配'gr'后面接任意字符然后是'p'

:'grep'表示匹配一個(gè)或多個(gè)空格后緊跟grep的行

[]:[Gg]rep表示匹配Grep與grep

[]:[A-FH-Z]rep表示匹配不以A-F、H-Z開頭并緊跟rep的行

例如(grep命令大多數(shù)時(shí)候多要和別的命令一起使用才有意義):

ps -ef | grep -c SVN:查找指定的進(jìn)程的個(gè)數(shù)

cat test.txt | grep -f test2.txt:從text2.txt中讀取關(guān)鍵字后在test.txt中搜索

cat test.txt | grep nf text2.txt:從text2.txt中讀取關(guān)鍵字后在text.txt中搜索并顯示行號(hào)

grep 'linux' text.txt test2.txt:從多個(gè)文件中搜索關(guān)鍵字'linux'

cat test.txt | grep -E 'ed|at':顯示包含ed或at的行

在Linux系統(tǒng)中,常使用什么命令檢索關(guān)鍵字

方法一:find命令

find是最常見和最強(qiáng)大的查找命令,你可以用它找到任何你想找的文件。

命令格式:find 指定目錄 指定條件 指定動(dòng)作

- 指定目錄: 所要搜索的目錄及其所有子目錄。默認(rèn)為當(dāng)前目錄。

- 指定條件: 所要搜索的文件的特征。

- 指定動(dòng)作: 對(duì)搜索結(jié)果進(jìn)行特定的處理。

如果什么參數(shù)也不加,find默認(rèn)搜索當(dāng)前目錄及其子目錄,并且不過濾任何結(jié)果(也就是返回所有文件),將它們?nèi)硷@示在屏幕上。

使用實(shí)例:

$ find . -name 'my*'

搜索當(dāng)前目錄(含子目錄,以下同)中,所有文件名以my開頭的文件。

$ find . -name 'my*' -ls

搜索當(dāng)前目錄中,所有文件名以my開頭的文件,并顯示它們的詳細(xì)信息。

$ find . -type f -mmin -10

搜索當(dāng)前目錄中,所有過去10分鐘中更新過的普通文件。如果不加-type f參數(shù),則搜索普通文件+特殊文件+目錄。

方法二:locate命令

locate命令其實(shí)是"find -name"的另一種寫法,但是要比后者快得多,原因在于它不搜索具體目錄,而是搜索一個(gè)數(shù)據(jù)庫(/var/lib/locatedb),這個(gè)數(shù)據(jù)庫中含有本地所有文件信息。Linux系統(tǒng)自動(dòng)創(chuàng)建這個(gè)數(shù)據(jù)庫,并且每天自動(dòng)更新一次,所以使用locate命令查不到最新變動(dòng)過的文件。為了避免這種情況,可以在使用locate之前,先使用updatedb命令,手動(dòng)更新數(shù)據(jù)庫。

使用實(shí)例:

$ locate /etc/sh

搜索etc目錄下所有以sh開頭的文件。

$ locate ~/m

搜索用戶主目錄下,所有以m開頭的文件。

$ locate -i ~/m

搜索用戶主目錄下,所有以m開頭的文件,并且忽略大小寫。

linux服務(wù)器文本關(guān)鍵字搜索替換

1、vi命令下的查找和替換

1.1 vi下的查找

/helloEnter :向下查找hello匹配字符串

?helloEnter:向上查找hello匹配字符串

使用了查找命令之后,使用如下兩個(gè)鍵快速查找:

n:按照同一方向繼續(xù)查找

N:按照反方向查找

hello是需要匹配的字符串,例如:

/nameEnter? ? ? #查找name

/nameEnter? ? #查找name單詞(注意前后的空格)

除此之外,hello還可以使用一些特殊字符,包括(/、^、$、*、.),其中前三個(gè)這兩個(gè)是vi與vim通用的,“/”為轉(zhuǎn)義字符。

/^nameEnter? ? #查找以name開始的行

/name$Enter? ? #查找以name結(jié)束的行

//^nameEnter? ? #查找^name字符串

1.2 vi下的替換

:s/name/title/? ? ? ? #替換當(dāng)前行第一個(gè) name 為 title

:s/name/title/g? ? #替換當(dāng)前行所有 name 為 title

:n,$s/name/title/? ? #替換第 n 行開始到最后一行中每一行的第一個(gè) name 為 title

:n,$s/name/title/g? ? #替換第 n 行開始到最后一行中每一行所有 name 為 title

#(n 為數(shù)字,若 n 為 .,表示從當(dāng)前行開始到最后一行)

:%s/name/title/? ? ? ? #(等同于 :g/name/s//title/) 替換每一行的第一個(gè) name 為 title

:%s/name/title/g? ? #(等同于 :g/name/s//title/g) 替換每一行中所有 name 為 title

可以使用 #或+ 作為分隔符,此時(shí)中間出現(xiàn)的 / 不會(huì)作為分隔符

:s#name/#title/#? ? ? ? 替換當(dāng)前行第一個(gè) name/ 為 title/

:%s+/oradata/apras/+/user01/apras1+ (

使用+ 來 替換 / ): /oradata/apras/替換成/user01/apras1/

2.sed和grep配合

命令:sed -i s/yyyy/xxxx/g `grep yyyy -rl --include="*.txt" ./`

作用:將當(dāng)前目錄(包括子目錄)中所有txt文件中的yyyy字符串替換為xxxx字符串。其中,

-i 表示操作的是文件,``括起來的grep命令,表示將grep命令的的結(jié)果作為操作文件。

s/yyyy/xxxx/表示查找yyyy并替換為xxxx,后面跟g表示一行中有多個(gè)yyyy的時(shí)候,都替換,而不是僅替換第一個(gè)

另外,如果不需要查找子目錄,僅需要在當(dāng)前目錄替換,用sed命令就行了,命令如下:sed -i s/xxxx/yyyy/g ./*.txt

3.find命令查找和替換

命令格式:find -name '要查找的文件名' | xargs perl -pi -e 's|被替換的字符串|替換后的字符串|g'

#查找替換當(dāng)前目錄下包含字符串并進(jìn)行替換

find -name '*.txt' | xargs perl -pi -e 's|江蘇|上海|g'

#遞歸查找替換

find . -type f -name '*.html' | xargs perl -pi -e 's|蘇州|上海|g'

Linux shell中在vi打開的文件中查找關(guān)鍵字

linux shell中使用vi命令打開文本文件后,如果需要查找字符

從開頭搜索

在命令模式下,輸入 / 你要查找的字符

按下回車,可以看到vim把光標(biāo)移動(dòng)到該字符處

再按n(小寫)查看下一個(gè)匹配

按N(大寫)查看上一個(gè)匹配(capslock切換大小寫,也可以在小寫狀態(tài)下按shift+n)

從結(jié)尾處搜索

?要搜索的字符串或字符

搜索后,打開別的文件發(fā)現(xiàn)也被高亮了,怎么關(guān)閉?

命令行模式下,輸入:nohlsearch或者:set nohlsearch

可以簡(jiǎn)寫成noh喝set-noh

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

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

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

用法:

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

cat-b 列出行號(hào),僅針對(duì)非空白行做行號(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)作只對(duì)文件有用,對(duì)管線無用。

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ù)偵測(cè)后面所接的檔名,要等到按下[ctrl]-c才會(huì)結(jié)束tail的偵測(cè);

網(wǎng)站欄目:linux查關(guān)鍵字命令 linux搜索關(guān)鍵字命令
網(wǎng)站鏈接:http://www.jinyejixie.com/article24/hpdcje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、域名注冊(cè)、搜索引擎優(yōu)化、網(wǎng)站制作、品牌網(wǎng)站建設(shè)、建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐ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ì)公司