linux命令fixed 查看文件大小的Linux命令

linux grep命令詳解

簡介

在閩清等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都做網(wǎng)站、成都網(wǎng)站設(shè)計 網(wǎng)站設(shè)計制作按需求定制制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,成都營銷網(wǎng)站建設(shè),外貿(mào)網(wǎng)站建設(shè),閩清網(wǎng)站建設(shè)費用合理。

grep (global search regular expression(RE) and print out the line,全面搜索正則表達式并把行打印出來)是一種強大的文本搜索工具,它能使用正則表達式搜索文本,并把匹配的行打印出來。

Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的擴展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它們把所有的字母都看作單詞,也就是說,正則表達式中的元字符表示回其自身的字面意義,不再特殊。linux使用GNU版本的grep。它功能更強,可以通過-G、-E、-F命令行選項來使用egrep和fgrep的功能。

grep常用用法

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

選項與參數(shù):-a :將 binary 文件以 text 文件的方式搜尋數(shù)據(jù)-c :計算找到'搜尋字符串' 的次數(shù)-i :忽略大小寫的不同,所以大小寫視為相同-n :順便輸出行號-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 的行取出來,同時顯示這些行在/etc/passwd的行號

#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)鍵字部分使用顏色顯示。 這可是個很不錯的功能??!但是如果每次使用 grep 都得要自行加上 --color=auto 又顯的很麻煩~ 此時那個好用的 alias 就得來處理一下啦!你可以在 ~/.bashrc 內(nèi)加上這行:『alias grep='grep --color=auto'』再以『 source ~/.bashrc 』來立即生效即可喔! 這樣每次運行 grep 他都會自動幫你加上顏色顯示啦

將/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)鍵字顯色,且加上行號來表示:

[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

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

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

用 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)

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

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

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

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

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

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

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

grep與正規(guī)表達式

字符類

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

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

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

字符類的反向選擇 [^] :如果想要搜索到有 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 行沒有疑問,因為 foo 與 Foo 均可被接受!

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

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

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

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

也就是說,當(dāng)我們在一組集合字節(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 只在行首列出呢? 這個時候就得要使用定位字節(jié)了!我們可以這樣做:

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

此時,就只剩下第 12 行,因為只有第 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

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

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

[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.

特別注意到,因為小數(shù)點具有其他意義(底下會介紹),所以必須要使用轉(zhuǎn)義字符(\)來加以解除其特殊意義!

找出空白行:

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

因為只有行首跟行尾 (^$),所以,這樣就可以找出空白行啦!

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

這兩個符號在正則表達式的意義如下:

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

假設(shè)我需要找出 g??d 的字串,亦即共有四個字節(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".

因為強調(diào) g 與 d 之間一定要存在兩個字節(jié),因此,第 13 行的 god 與第 14 行的 gd 就不會被列出來啦!

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

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

當(dāng)我們需要『至少兩個 o 以上的字串』時,就需要 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 之間僅能存在至少一個 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.

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

如果我想要找出『任意數(shù)字』的行?因為僅有數(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 個到無限多個重復(fù)字節(jié), 那如果我想要限制一個范圍區(qū)間內(nèi)的重復(fù)字節(jié)數(shù)呢?

舉例來說,我想要找出兩個到五個 o 的連續(xù)字串,該如何作?這時候就得要使用到限定范圍的字符 {} 了。 但因為 { 與 } 的符號在 shell 是有特殊意義的,因此, 我們必須要使用字符 ? \ 來讓他失去特殊意義才行。 至於 {} 的語法是這樣的,假設(shè)我要找到兩個 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 個 o ,然后再接一個 g 的字串,他會是這樣:

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

如果我想要的是 2 個 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!

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

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

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

#egrep'NW|EA' testfile? ?

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

對于標準grep,如果在擴展元字符前面加\,grep會自動啟用擴展選項-E。

#grep'NW\|EA' testfile

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

搜索所有包含一個或多個3的行。

#egrep'3+' testfile

# grep-E'3+' testfile

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

#這3條命令將會

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個或1個小數(shù)點字符的行。

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

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

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

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

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

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

#egrep'(no)+' testfile

# grep-E'(no)+' testfile

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

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

不使用正則表達式

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

如果你想在一個文件或者輸出中找到包含星號字符的行

fgrep? '*' /etc/profile

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

grep -F '*' /etc/profile

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

10 分鐘學(xué)會Linux常用 bash命令

顯示所有的環(huán)境變量,如果你想獲取某個變量的詳細信息,使用 echo $VARIABLE_NAME .

Example:

whereis使用系統(tǒng)自動構(gòu)建的數(shù)據(jù)庫來搜索可執(zhí)行文件,源文件和手冊頁面。

Example:

它在環(huán)境變量PATH指定的目錄中搜索可執(zhí)行文件。此命令將打印可執(zhí)行文件的完整路徑。

Example:

清除窗口上的內(nèi)容。

列出您的文件。 ls 有很多選項: -l 列出“長格式”的文件,其中包含文件的確切大小,擁有該文件的人員,有權(quán)查看該文件,以及何時進行上次修改。 -a 列出所有文件,包括隱藏文件。有關(guān)此命令的更多信息,請檢查此鏈接。

Example:

創(chuàng)建或更新您的文件。

Example:

它可以在UNIX或Linux下用于以下目的。

顯示文件的第一部分(用空格移動并鍵入q以退出)。

輸出文件的前10行。

輸出最后10行文件。用于-f在文件增長時輸出附加數(shù)據(jù)。

將文件從一個位置移動到另一個位置。

filename1 文件的源路徑, filename2 是目標路徑。

將文件從一個位置復(fù)制到另一個位置。

filename1 文件的源路徑, filename2 是目標路徑。

刪除文件。在目錄上使用此命令會給您顯示一個錯誤: rm: directory: is a directory 。 為了刪除目錄,你必須傳遞 -rf 去遞歸刪除目錄中的所有內(nèi)容。

比較文件,并列出他們的差異。

讓您更改文件的讀取,寫入和執(zhí)行權(quán)限。

壓縮文件。

解壓縮gzip壓縮的文件。

讓你查看gzip壓縮文件,而不需要gunzip它。

打印文件。

查看打印機隊列。

Example:

從打印隊列移除某些內(nèi)容。

awk是處理文本文件最有用的命令。它一行一行地在整個文件上運行。默認情況下,它使用空格分隔字段。awk命令最常用的語法是

讓我們采取以下文件 /etc/passwd 。以下是此文件包含的示例數(shù)據(jù):

所以現(xiàn)在讓我們從這個文件只獲取用戶名。 -F 指定在我們要基于哪個分隔字段。在我們的例子中 : 。 { print $1 } 意味著打印出第一個匹配字段。

運行上述命令后,您將獲得以下輸出。

有關(guān)如何使用 awk 的更多細節(jié),請查看以下鏈接。

查找文件內(nèi)的文本。您可以使用grep搜索與一個或多個正則表達式匹配的文本行,并僅輸出匹配的行。

Example:

您還可以通過使用 -i 選項強制grep忽略單詞大小寫。 -r 可用于搜索指定目錄下的所有文件,例如:

-w 只搜索單詞。有關(guān) grep 詳細信息,請查看以下鏈接。

告訴你一個文件中有多少行,多少單詞和多少字符。

Example:

7459 是行數(shù), 15915 是單詞數(shù), 398400 是字符數(shù).

用于過濾和轉(zhuǎn)換文本的流編輯器。

example.txt

用連字符替換所有空格

使用"d"替換所有的數(shù)字

排序文本文件的行

example.txt

sort example.txt

隨機化一個排序的example.txt

報告或省略重復(fù)的行

example.txt

只顯示example.txt的唯一行(首先你需要排序,否則看不到重疊)

顯示每行的唯一項,并告訴我找到了多少個實例

從每行文件中刪除部分。

example.txt

顯示第2,7和9欄的空格作為分隔符

顯示一行文字

顯示 "Hello World"

用字母之間的換行顯示 "Hello World"

簡單的最佳文本格式化程序

example: example.txt (1 line)

將example.txt的行輸出為20個字符的寬度

翻譯或刪除字符

example.txt

把所有小寫字母變成為大寫

把所有的空格變成換行符

顯示文件的行數(shù)

example.txt

帶行號顯示 example.txt

打印匹配模式的行 - 擴展表達式(別名為:'grep -E')

example.txt

在其中顯示“Lorem”或“dolor”的行

打印匹配模式到的行 - FIXED模式匹配(別名為:'grep -F')

example.txt

在example.txt中找到具體的字符串'(Lorem | doloar)'

生成一個新的目錄。

執(zhí)行這個,從一個目錄轉(zhuǎn)移到另外一個目錄。

將你移動到主目錄。此命令接受可選的 dirname ,將你移動到該目錄。

告訴你你目前所在的目錄。

ssh (SSH client) 是一個用來在登錄到遠程機器并執(zhí)行的命令的程序。

此命令還接受 -p 可用于連接到特定端口的選項。

返回當(dāng)前登錄用戶名。

允許當(dāng)前登錄的用戶更改其密碼。

顯示您的磁盤配額。

顯示當(dāng)前日期和時間。

顯示月份的日歷。

顯示當(dāng)前的正常運行時間。

顯示誰在線

Displays information about user.

顯示內(nèi)核信息。

顯示指定命令的手冊。

顯示磁盤使用情況。

顯示文件名中文件和目錄的磁盤使用情況(du -s只給出一個總數(shù))。

列出您最后登錄的指定用戶。

列出您的進程。

使用您所提供的ID殺死(結(jié)束)進程。

用名稱殺死所有進程。

顯示當(dāng)前活動的進程。

列出停止的或后臺工作的Job; 恢復(fù)在后臺停止的Job。

前臺化最近的Job。

Brings the most recent job in the foreground.

Pings主機并輸出結(jié)果。

獲取域的whois信息。

獲取域的DNS信息。

下載文件。

在本地主機和遠程主機之間或兩臺遠程主機之間傳輸文件。

從本地主機復(fù)制到遠程主機

從遠程主機復(fù)制到本地主機

此命令還接受 -P 選項可用于連接到特定的端口。

在bash中你將編寫第一行腳本文件,被叫做 shebang 。任何腳本中的這一行來確定腳本的執(zhí)行能力,如獨立的可執(zhí)行文件,而不是在終端中預(yù)先鍵入sh,bash,python,php等。

Example:

上面的一行創(chuàng)建一個變量str并給它賦值“hello world”。通過 $ 放在變量名的開頭來檢索變量的值。

Example:

像其他語言一樣,bash也有數(shù)組。數(shù)組是包含多個值的變量。數(shù)組的大小沒有最大限制。bash中的數(shù)組為零。第一個元素被索引為元素0.在bash中創(chuàng)建數(shù)組有幾種方法。以下給出了哪些。

Examples:

要在特定索引處顯示值,請使用以下語法:

如果沒有提供索引,則假定為數(shù)組元素0。要了解數(shù)組中有多少值,請使用以下語法:

Bash也支持三元條件。下面是一些例子。

檢查一些關(guān)于如何操作字符串的語法

Example:

當(dāng)您運行上述示例時,該hello函數(shù)將輸出“world!”。上述兩個功能 hello 和 say 是相同的。主要區(qū)別是功能 say 。此功能打印其接收到的第一個參數(shù)。函數(shù)內(nèi)的參數(shù)以與給腳本的參數(shù)相同的方式進行處理。

bash中的條件語句與其他編程語言相似。條件有許多形式,如最基本的形式是 if 表達式 then 語句,其中語句只有在表達式為真時執(zhí)行。

有時,如果條件變得混亂,所以你可以使用相同的條件 case statements 。

Expression Examples:

bash 中有三種不同類型的循環(huán)。 for , while 和 until .

for 語法:

while 語法:

until 語法:

bash_profile 可以通過運行后面的命令打開。 nano ~/.bash_profile

nano ~/.bashrc

source ~/.bashrc

cd hotellogs

您可以通過傳遞不同的選項來輕松地調(diào)試bash腳本bash。例如-n,不會運行命令并僅檢查語法錯誤。-vecho命令在運行它們之前。-x命令行處理后的echo命令。

Linux系統(tǒng)中g(shù)rep命令如何使用?常用參數(shù)有哪些?

進行Linux系統(tǒng)維護的時候,想要在文本中快速搜索到你需要的東西,grep命令是非常不錯的選擇,它主要用于查找文件里符合條件的字符串,從而節(jié)省時間、提高工作效率。那么Linux系統(tǒng)中g(shù)rep命令如何使用?我們一起來看看詳細的內(nèi)容介紹。

Linux grep命令用于查找文件里符合條件的字符串。

grep指令用于查找內(nèi)容包含指定的范本樣式的文件,如果發(fā)現(xiàn)某文件的內(nèi)容符合所指定的范本樣式,預(yù)設(shè)grep指令會把含有范本樣式的那一列顯示出來。若不指定任何文件名稱,或是所給予的文件名為-,則grep指令會從標準輸入設(shè)備讀取數(shù)據(jù)。

語法

grep

[-abcEFGhHilLnqrsvVwxy][-A顯示行數(shù)][-B顯示列數(shù)][-C顯示列數(shù)][-d進行動作][-e范本樣式][-f范本文件][--help][范本樣式][文件或目錄...]

參數(shù)

-a或--text:不要忽略二進制的數(shù)據(jù)。

-A顯示行數(shù)或--after-context=顯示行數(shù):除了顯示符合范本樣式的那一列之外,并顯示該行之后的內(nèi)容。

-b或--byte-offset:在顯示符合樣式的那一行之前,標示出該行第一個字符的編號。

-B顯示行數(shù)或--before-context=顯示行數(shù):除了顯示符合樣式的那一行之外,并顯示該行之前的內(nèi)容。

-c或--count:計算符合樣式的列數(shù)。

-C顯示行數(shù)或--context=顯示行數(shù)或-顯示行數(shù):除了顯示符合樣式的那一行之外,并顯示該行之前后的內(nèi)容。

-d動作或--directories=動作:當(dāng)指定要查找的是目錄而非文件時,必須使用這項參數(shù),否則grep指令將回報信息并停止動作。

-e范本樣式或--regexp=范本樣式:指定字符串做為查找文件內(nèi)容的樣式。

-E或--extended-regexp:將樣式為延伸的正則表達式來使用。

-f規(guī)則文件或--file=規(guī)則文件:指定規(guī)則文件,其內(nèi)容含有一個或多個規(guī)則樣式,讓grep查找符合規(guī)則條件的文件內(nèi)容,格式為每行一個規(guī)則樣式。

-F或--fixed-regexp:將樣式視為固定字符串的列表。

-G或--basic-regexp:將樣式視為普通的表示法來使用。

-h或--no-filename:在顯示符合樣式的那一行之前,不標示該行所屬的文件名稱。

-H或--with-filename:在顯示符合樣式的那一行之前,表示該行所屬的文件名稱。

………………

參數(shù)較多,就不為大家一一講解了!

Linux里面grep -v命令作用是什么?

grep命令

grep

1.作用

Linux系統(tǒng)中g(shù)rep命令是一種強大的文本搜索工具,它能使用正則表達式搜索文本,并把匹 配的行打印出來。grep全稱是Global Regular Expression Print,表示全局正則表達式版本,它的使用權(quán)限是所有用戶。

grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的擴展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它們把所有的字母都看作單詞,也就是說,正則表達式中的元字符表示回其自身的字面意義,不再特殊。linux使用GNU版本的grep。它功能更強,可以通過-G、-E、-F命令行選項來使用egrep和fgrep的功能。

2.格式及主要參數(shù)

grep [options]

主要參數(shù): grep --help可查看

-c:只輸出匹配行的計數(shù)。

-i:不區(qū)分大小寫。

-h:查詢多文件時不顯示文件名。

-l:查詢多文件時只輸出包含匹配字符的文件名。

-n:顯示匹配行及 行號。

-s:不顯示不存在或無匹配文本的錯誤信息。

-v:顯示不包含匹配文本的所有行。

--color=auto :可以將找到的關(guān)鍵詞部分加上顏色的顯示。

pattern正則表達式主要參數(shù):

\: 忽略正則表達式中特殊字符的原有含義。

^:匹配正則表達式的開始行。

$: 匹配正則表達式的結(jié)束行。

\:從匹配正則表達 式的行開始。

\:到匹配正則表達式的行結(jié)束。

[ ]:單個字符,如[A]即A符合要求 。

[ - ]:范圍,如[A-Z],即A、B、C一直到Z都符合要求 。

.:所有的單個字符。

*:所有字符,長度可以為0。

3.grep命令使用簡單實例

itcast$ grep ‘test’ d*

顯示所有以d開頭的文件中包含 test的行

itcast $ grep ‘test’ aa bb cc

顯示在aa,bb,cc文件中匹配test的行。

itcast $ grep ‘[a-z]\{5\}’ aa

顯示所有包含每個字符串至少有5個連續(xù)小寫字符的字符串的行。

itcast $ grep ‘wesest.*\1′ aa

如果west被匹配,則es就被存儲到內(nèi)存中,并標記為1,然后搜索任意個字符(.*),這些字符后面緊跟著 另外一個es(\1),找到就顯示該行。如果用egrep或grep -E,就不用”\”號進行轉(zhuǎn)義,直接寫成’w(es)t.*\1′就可以了。

4.grep命令使用復(fù)雜實例

明確要求搜索子目錄:

grep -r

或忽略子目錄

grep -d skip

如果有很多輸出時,您可以通過管道將其轉(zhuǎn)到’less’上閱讀:

itcast$ grep magic /usr/src/Linux/Documentation/* | less

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

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

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

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

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

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

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

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

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

例如:grep "abc\|xyz" testfile 表示過濾包含abc或xyz的行

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

grep -n pattern files 即可顯示行號信息

grep -c pattern files 即可查找總行數(shù)

還有些用于搜索的特殊符號:\ 和 \ 分別標注單詞的開始與結(jié)尾。

例如:

grep man * 會匹配 ‘Batman’、’manic’、’man’等,

grep ‘\man’ * 匹配’manic’和’man’,但不是’Batman’,

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

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

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

Linux中g(shù)rep與fgrep命令的使用,兩個命令的使用都與文本的搜索與匹配相關(guān),是Linux入門學(xué)習(xí)中的基礎(chǔ)知識,接下來是我為大家收集的Linux文本匹配命令grep與fgrep使用全解,希望能幫到大家。

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

grep

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

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

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

grep --help

匹配模式選擇:

-E, --extended-regexp 擴展正則表達式egrep

-F, --fixed-strings 一個換行符分隔的字符串的集合fgrep

-G, --basic-regexp 基本正則

-P, --perl-regexp 調(diào)用的perl正則

-e, --regexp=PATTERN 后面根正則模式,默認無

-f, --file=FILE 從文件中獲得匹配模式

-i, --ignore-case 不區(qū)分大小寫

-w, --word-regexp 匹配整個單詞

-x, --line-regexp 匹配整行

-z, --null-data 一個 0 字節(jié)的數(shù)據(jù)行,但不是空行

雜項:

-s, --no-messages 不顯示錯誤信息

-v, --invert-match 顯示不匹配的行

-V, --version 顯示版本號

--help 顯示幫助信息

--mmap use memory-mapped input if possible

輸入控制:

-m, --max-count=NUM 匹配的最大數(shù)

-b, --byte-offset 打印匹配行前面打印該行所在的塊號碼。

-n, --line-number 顯示的加上匹配所在的行號

--line-buffered 刷新輸出每一行

-H, --with-filename 當(dāng)搜索多個文件時,顯示匹配文件名前綴

-h, --no-filename 當(dāng)搜索多個文件時,不顯示匹配文件名前綴

--label=LABEL print LABEL as filename for standard input

-o, --only-matching 只顯示一行中匹配PATTERN 的部分

-q, --quiet, --silent 不顯示任何東西

--binary-files=TYPE 假定二進制文件的TYPE 類型;

TYPE 可以是`binary', `text', 或`without-match'

-a, --text 匹配二進制的東西

-I 不匹配二進制的東西

-d, --directories=ACTION 目錄操作,讀取,遞歸,跳過

-D, --devices=ACTION 設(shè)置對設(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 匹配多個文件時,顯示不匹配的文件名

-l, --files-with-matches 匹配多個文件時,顯示匹配的文件名

-c, --count 顯示匹配了多少次

-Z, --null 在FILE 文件最后打印空字符

文件控制:

-B, --before-context=NUM 打印匹配本身以及前面的幾個行由NUM控制

-A, --after-context=NUM 打印匹配本身以及隨后的幾個行由NUM控制

-C, --context=NUM 打印匹配本身以及隨后,前面的幾個行由NUM控制

-NUM 根-C的用法一樣的

--color[=WHEN],

--colour[=WHEN] 使用標志高亮匹配字串;

-U, --binary 使用標志高亮匹配字串;

-u, --unix-byte-offsets 當(dāng)CR 字符不存在,報告字節(jié)偏移(MSDOS 模式)

例:

測試文件

復(fù)制代碼

代碼如下:

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的行

復(fù)制代碼

代碼如下:

[root@krlcgcms01 test]# grep root test

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

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

復(fù)制代碼

代碼如下:

[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開頭的行,注意反斜杠,根上面一個例子一樣,-e默認是省去的

[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開頭,只含有字母

復(fù)制代碼

代碼如下:

[root@krlcgcms01 test]# echo 'zhangying' |grep '^zhang[a-z]*$'

zhangying

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

復(fù)制代碼

代碼如下:

[root@krlcgcms01 test]# cat test |grep -E '^bin'

bin:x:1:1:bin:/bin:/bin/false,aaa,bbbb,cccc,aaaaaa

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

復(fù)制代碼

代碼如下:

[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開頭的行,并顯示行號

復(fù)制代碼

代碼如下:

[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,顯示匹配的個數(shù),不顯示內(nèi)容

復(fù)制代碼

代碼如下:

[root@krlcgcms01 test]# cat test|grep -c zhang

3

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

復(fù)制代碼

代碼如下:

[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能匹配到,因為在test文件中,有zhangy這個單詞

復(fù)制代碼

代碼如下:

[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后面東西,和輸出中的整行相同時,才會輸出

[root@krlcgcms01 test]# echo "aaaaaa" |grep -x aaa

[root@krlcgcms01 test]# echo "aaaa" |grep -x aaaa

aaaa

l,最多只匹配一次,如果把-m 1去掉的話,會有三個

復(fù)制代碼

代碼如下:

[root@krlcgcms01 test]# cat test |grep -m 1 zhang

zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash

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

復(fù)制代碼

代碼如下:

[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,多文件匹配時,在匹配的行前面加上文件名

復(fù)制代碼

代碼如下:

[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,多文件匹配時,在匹配的行前面不加上文件名

復(fù)制代碼

代碼如下:

[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,多文件匹配時,顯示匹配文件的文件名

復(fù)制代碼

代碼如下:

[apacheuser@krlcgcms01 test]$ grep -l 'root' test test2 testbak DAta

test

test2

testbak

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

復(fù)制代碼

代碼如下:

[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目錄下面建個mytest目錄,copy test目錄下面的test文件到mytest下面,能看到上面的結(jié)果

復(fù)制代碼

代碼如下:

[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行

復(fù)制代碼

代碼如下:

[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 [選項]... PATTERN [FILE]...

在每個 FILE 或是標準輸入中查找 PATTERN。

PATTERN 是一組由斷行符分隔的定長字符串。

例如: fgrep -i 'hello world' menu.h main.c

正則表達式選擇與解釋:

-e, --regexp=PATTERN 用 PATTERN 來進行匹配操作

-f, --file=FILE 從 FILE 中取得 PATTERN

-i, --ignore-case 忽略大小寫

-w, --word-regexp 強制 PATTERN 僅完全匹配字詞

-x, --line-regexp 強制 PATTERN 僅完全匹配一行

-z, --null-data 一個 0 字節(jié)的數(shù)據(jù)行,但不是空行

雜項:

-s, --no-messages 不顯示錯誤信息

-v, --invert-match 選中不匹配的行

-V, --version 顯示版本信息并退出

--help 顯示此幫助并退出

--mmap 忽略向后兼容性

Output control:

-m, --max-count=NUM 匹配的最大數(shù)

-b, --byte-offset 打印匹配行前面打印該行所在的塊號碼

-n, --line-number 顯示的加上匹配所在的行號

--line-buffered 刷新輸出每一行

-H, --with-filename 當(dāng)搜索多個文件時,顯示匹配文件名前綴

-h, --no-filename 當(dāng)搜索多個文件時,不顯示匹配文件名前綴

--label=LABEL use LABEL as the standard input file name prefix

-o, --only-matching 只顯示一行中匹配PATTERN 的部分

-q, --quiet, --silent 不顯示所有輸出

--binary-files=TYPE 假定二進制文件的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è)備、先入先出隊列、套接字的方式;

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 只打印每個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] 使用標志高亮匹配字串;

WHEN 可以是`always', `never'或`auto'

-U, --binary 不要清除行尾的CR 字符(MSDOS 模式)

-u, --unix-byte-offsets 當(dāng)CR 字符不存在,報告字節(jié)偏移(MSDOS 模式)

‘fgrep’已不再使用了;請用 ‘grep -F’代替。

不帶 FILE 參數(shù),或是 FILE 為 -,將讀取標準輸入。如果少于兩個 FILE 參數(shù)

就要默認使用 -h 參數(shù)。如果選中任意一行,那退出狀態(tài)為 0,否則為 1;

如果有錯誤產(chǎn)生,且未指定 -q 參數(shù),那退出狀態(tài)為 2。

例:

復(fù)制代碼

代碼如下:

[root@linux test]# cat abc.sh |fgrep a #匹配含有a的

看了“Linux文本匹配命令grep與fgrep使用全解”還想看:

1. linux grep命令詳解

2. 全面解析Linux的grep命令中正則表達式的用法

3. Linux下如何使用grep命令搜索多個單詞

4. 開發(fā)人員常用什么linux命令

本文標題:linux命令fixed 查看文件大小的Linux命令
網(wǎng)站網(wǎng)址:http://muchs.cn/article34/docccpe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、用戶體驗關(guān)鍵詞優(yōu)化、建站公司、面包屑導(dǎo)航、網(wǎng)站建設(shè)

廣告

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

成都做網(wǎng)站