linux找出數(shù)字命令 linux查找字符命令

如何讓Linux的grep輸出只含數(shù)字的行?

grep支持三種re,basic re、extended re、perl re。

成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括廣饒網(wǎng)站建設(shè)、廣饒網(wǎng)站制作、廣饒網(wǎng)頁(yè)制作以及廣饒網(wǎng)絡(luò)營(yíng)銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,廣饒網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到廣饒省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

前兩種都無法達(dá)到你的需求。用perlre可以,需要參數(shù)-P,pattern 為 '^\D*\d(?!.*\d)' ,引起來較妥,\d代表數(shù)字寫,和 [0-9] 一回事,\D表示非數(shù)字,^\D*\d,表示從一行起始至找到第一個(gè)數(shù)字為止,(?!pattern) 是一個(gè)判斷,表示從該位置起往后,不符合 pattern 描述時(shí),判斷結(jié)果為 “真”。(?!.*\d) 表示,從匹配到第一個(gè)數(shù)字至一行末,無法招待第二個(gè)數(shù)字。更多Linux知識(shí)可參考《Linux就該這么學(xué)》。

如何在linux系統(tǒng)下使用 find 命令

* 通過文件名查找:

這個(gè)方法說起來就和在WINDOWS下查找文件一樣容易理解了。如果你把這個(gè)文件放在單個(gè)的文件夾里面,只要使用常見的“l(fā)s"命令就能方便的查找出來, 那么使用“find”命令來查找它就不能給你留下深刻的印象,畢竟“find”命令的強(qiáng)大功能不止這個(gè)。如果知道了某個(gè)文件的文件名,而不知道這個(gè)文件放 到哪個(gè)文件夾,甚至是層層套嵌的文件夾里。舉例說明,假設(shè)你忘記了httpd.conf這個(gè)文件在系統(tǒng)的哪個(gè)目錄下,甚至在系統(tǒng)的某個(gè)地方也不知道,則這 是可以使用如下命令:

find / -name httpd.conf

這個(gè)命令語法看起來很容易就明白了,就是直接在find后面寫上 -name,表明要求系統(tǒng)按照文件名查找,最后寫上httpd.conf這個(gè)目標(biāo)文件名即可。稍等一會(huì)系統(tǒng)會(huì)在計(jì)算機(jī)屏幕上顯示出查找結(jié)果列表:

etc/httpd/conf/httpd.conf

這就是httpd.conf這個(gè)文件在Linux系統(tǒng)中的完整路徑。查找成功。

如果輸入以上查找命令后系統(tǒng)并沒有顯示出結(jié)果,那么不要以為系統(tǒng)沒有執(zhí)行find/ -name httpd.conf命令,而可能是你的系統(tǒng)中沒有安裝Apache服務(wù)器,這時(shí)只要你安裝了Apache Web服務(wù)器,然后再使用find / -name httpd.conf就能找到這個(gè)配置文件了。

* 無錯(cuò)誤查找技巧:

在 Linux系統(tǒng)中“find”命令是大多數(shù)系統(tǒng)用戶都可以使用的命令,并不是ROOT系統(tǒng)管理員的專利。但是普通用戶使用“find”命令時(shí)也有可能遇到 這樣的問題,那就是Linux系統(tǒng)中系統(tǒng)管理員ROOT可以把某些文件目錄設(shè)置成禁止訪問模式。這樣普通用戶就沒有權(quán)限用“find”命令來查詢這些目錄 或者文件。當(dāng)普通用戶使用“find”命令來查詢這些文件目錄是,往往會(huì)出現(xiàn)"Permissiondenied."(禁止訪問)字樣。系統(tǒng)將無法查詢到 你想要的文件。為了避免這樣的錯(cuò)誤,我們可是使用轉(zhuǎn)移錯(cuò)誤提示的方法嘗試著查找文件,輸入

find / -name access_log 2/dev/null

這個(gè)方法是把查找錯(cuò)誤提示轉(zhuǎn)移到特定的目錄中去。系統(tǒng)執(zhí)行這個(gè)命令后,遇到錯(cuò)誤的信息就直接輸送到stderrstream 2 中,access_log 2就是表明系統(tǒng)將把錯(cuò)誤信息輸送到stderrstream 2中,/dev/null是一個(gè)特殊的文件,表明空的或者錯(cuò)誤的信息,這樣查詢到的錯(cuò)誤信息將被轉(zhuǎn)移了,不會(huì)再顯示了。(這個(gè)地方?jīng)]弄明白)

在 Linux系統(tǒng)查找文件也會(huì)遇到這樣一個(gè)實(shí)際問題。如果我們?cè)谡麄€(gè)硬盤,這個(gè)系統(tǒng)中查找某個(gè)文件就要花費(fèi)相當(dāng)長(zhǎng)的一段時(shí)間,特別是大型Linux系統(tǒng)和容 量較大的硬盤,文件放在套嵌很深的目錄中的時(shí)候。如果我們知道了這個(gè)文件存放在某個(gè)大的目錄中,那么只要在這個(gè)目錄中往下找就能節(jié)省很多時(shí)間了。使用 find /etc -name httpd.conf 就可以解決這個(gè)問題。上面的命令就是表示在etc目錄中查詢httpd.conf這個(gè)文件。這里再說明一下“/ ”這個(gè)函數(shù)符號(hào)的含義,如果輸入 “find/ ”就是表示要求Linux系統(tǒng)在整個(gè)ROOT目錄下查找文件,也就是在整個(gè)硬盤上查找文件,而“find/etc”就是只在 etc目錄下查找文件。因?yàn)椤癴ind/etc”表示只在etc目錄下查找文件,所以查找的速度就相應(yīng)要快很多了。

* 根據(jù)部分文件名查找方法:

這個(gè)方法和在WINDOWS中查找已知的文件名方法是一樣的。不過在Linux中根據(jù)部分文件名查找文件的方法要比在WINDOWS中的同類查找方法要強(qiáng) 大得多。例如我們知道某個(gè)文件包含有srm這3個(gè)字母,那么要找到系統(tǒng)中所有包含有這3個(gè)字母的文件是可以實(shí)現(xiàn)的,輸入:

find /etc -name '*srm*'

這個(gè)命令表明了Linux系統(tǒng)將在/etc整個(gè)目錄中查找所有的包含有srm這3個(gè)字母的文件,比如 absrmyz, tibc.srm等等符合條件的文件都能顯示出來。如果你還知道這個(gè)文件是由srm 這3個(gè)字母打頭的,那么我們還可以省略最前面的星號(hào),命令如下:

find/etc -name 'srm*'.只有像srmyz 這樣的文件才被查找出來,象absrmyz或者 absrm這樣的文件都不符合要求,不被顯示,這樣查找文件的效率和可靠性就大大增強(qiáng)了。

* 根據(jù)文件的特征查詢方法:

如果只知道某個(gè)文件的大小,修改日期等特征也可以使用“find”命令查找出來,這和WINDOWS系統(tǒng)中的"搜索"功能是基本相同的。在微軟的"搜索 "中WINDOWS中的"搜索助理"使得搜索文件和文件夾、打印機(jī)、用戶以及網(wǎng)絡(luò)中的其他計(jì)算機(jī)更加容易。它甚至使在Internet 上搜索更加容易。"搜索助理"還包括一個(gè)索引服務(wù),該服務(wù)維護(hù)了計(jì)算機(jī)中所有文件的索引,使得搜索速度更快。使用"搜索助理"時(shí),用戶可以指定多個(gè)搜索標(biāo)準(zhǔn)。例如,用戶可以按名稱、類型及大小搜索文件和文件夾。用戶甚至可以搜索包含特定文本的文件。如果用戶正使用 Active Directory,這時(shí)還可以搜索帶有特定名稱或位置的打印機(jī)。

例如我們知道一個(gè)Linux文件大小為1,500 bytes,那么我們可是使用如下命令來查詢find / -size 1500c,字符 c 表明這個(gè)要查找的文件的大小是以bytes為單位。如果我們連這個(gè)文件的具體大小都不知道,那么在Linux中還可以進(jìn)行模糊查找方式來解決。例如我們輸 入find/ -size +10000000c 這個(gè)命令,則標(biāo)明我們指定系統(tǒng)在根目錄中查找出大于10000000字節(jié)的文件并顯示出來。命令中的"+"是表示要求系統(tǒng)只列出大于指定大小的文件,而使 用"-"則表示要求系統(tǒng)列出小于指定大小的文件。下面的列表就是在Linux使用不同"find"命令后系統(tǒng)所要作出的查找動(dòng)作,從中我們很容易看出在 Linux中使用"find"命令的方式是很多的,"find"命令查找文件只要靈活應(yīng)用,絲毫不必在WINDOWS中查找能力差。

find / -amin -10 # 查找在系統(tǒng)中最后10分鐘訪問的文件

find / -atime -2 # 查找在系統(tǒng)中最后48小時(shí)訪問的文件

find / -empty # 查找在系統(tǒng)中為空的文件或者文件夾

find / -group cat # 查找在系統(tǒng)中屬于 groupcat的文件

find / -mmin -5 # 查找在系統(tǒng)中最后5分鐘里修改過的文件

find / -mtime -1 #查找在系統(tǒng)中最后24小時(shí)里修改過的文件

find / -nouser #查找在系統(tǒng)中屬于作廢用戶的文件

find / -user fred #查找在系統(tǒng)中屬于FRED這個(gè)用戶的文件

下面的列表就是對(duì)find命令所可以指定文件的特征進(jìn)行查找的部分條件。在這里并沒有列舉所有的查找條件,參考有關(guān)Linux有關(guān)書籍可以知道所有 find命令的查找函數(shù)。

-amin n

查找系統(tǒng)中最后N分鐘訪問的文件

-atime n

查找系統(tǒng)中最后n*24小時(shí)訪問的文件

-cmin n

查找系統(tǒng)中最后N分鐘被改變狀態(tài)的文件

-ctime n

查找系統(tǒng)中最后n*24小時(shí)被改變狀態(tài)的文件

-empty

查找系統(tǒng)中空白的文件,或空白的文件目錄,或目錄中沒有子目錄的文件夾

-false

查找系統(tǒng)中總是錯(cuò)誤的文件

-fstype type

查找系統(tǒng)中存在于指定文件系統(tǒng)的文件,例如:ext2 .

-gid n

查找系統(tǒng)中文件數(shù)字組 ID 為 n的文件

-group gname

查找系統(tǒng)中文件屬于gnam文件組,并且指定組和ID的文件

* Find命令的控制選項(xiàng)說明:

Find命令也提供給用戶一些特有的選項(xiàng)來控制查找操作。下表就是我們總結(jié)出的最基本,最常用的find命令的控制選項(xiàng)及其用法。

選項(xiàng) 用途描述

-daystart 測(cè)試系統(tǒng)從今天開始24小時(shí)以內(nèi)的文件,用法類似-amin

-depth 使用深度級(jí)別的查找過程方式,在某層指定目錄中優(yōu)先查找文件內(nèi)容

-follow 遵循通配符鏈接方式查找; 另外,也可忽略通配符鏈接方式查詢

-help 顯示命令摘要

-maxdepth levels

在某個(gè)層次的目錄中按照遞減方法查找

-mount

不在文件系統(tǒng)目錄中查找, 用法類似 -xdev.

-noleaf 禁止在非UNUX文件系統(tǒng),MS-DOS系統(tǒng),CD-ROM文件系統(tǒng)中進(jìn)行最優(yōu)化查找

-version 打印版本數(shù)字

注:使用-follow選項(xiàng)后,find命令則遵循通配符鏈接方式進(jìn)行查找,除非你指定這個(gè)選項(xiàng),否則一般情況下find命令將忽略通配符鏈接方式進(jìn)行文件查找。

linux grep命令詳解

簡(jiǎn)介

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找出數(shù)字命令 linux查找字符命令
標(biāo)題網(wǎng)址:http://bm7419.com/article40/ddehdeo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、用戶體驗(yàn)、外貿(mào)網(wǎng)站建設(shè)、電子商務(wù)、品牌網(wǎng)站制作域名注冊(cè)

廣告

聲明:本網(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è)