linux提取命令詳解,你知道哪些獲取Linux基本信息的常用命令

Linux awk 命令詳解(二) if 分支 數(shù)組

一、awk if分支結(jié)構(gòu)

創(chuàng)新互聯(lián)建站網(wǎng)站建設(shè)服務(wù)商,為中小企業(yè)提供成都網(wǎng)站建設(shè)、成都做網(wǎng)站服務(wù),網(wǎng)站設(shè)計(jì),網(wǎng)站托管、服務(wù)器租用等一站式綜合服務(wù)型公司,專(zhuān)業(yè)打造企業(yè)形象網(wǎng)站,讓您在眾多競(jìng)爭(zhēng)對(duì)手中脫穎而出創(chuàng)新互聯(lián)建站。

二、awk數(shù)組 for循環(huán)

一、awk if分支結(jié)構(gòu)

案例1

awk過(guò)濾中的if分支結(jié)構(gòu)

1)單分支

統(tǒng)計(jì)/etc/passwd文件中UID小于或等于1000的用戶(hù)個(gè)數(shù):

統(tǒng)計(jì)/etc/passwd文件中UID大于1000的用戶(hù)個(gè)數(shù):

統(tǒng)計(jì)/etc/passwd文件中登錄Shell是“/bin/bash”的用戶(hù)個(gè)數(shù):

2)雙分支

分別統(tǒng)計(jì)/etc/passwd文件中UID小于或等于1000、UID大于1000的用戶(hù)個(gè)數(shù):

分別統(tǒng)計(jì)/etc/passwd文件中登錄Shell是“/bin/bash”、 登錄Shell不是“/bin/bash”的用戶(hù)個(gè)數(shù):

二、awk數(shù)組

注意,awk數(shù)組的下標(biāo)除了可以使用數(shù)字,也可以使用字符串,字符串需要使用雙引號(hào):

案例3:awk擴(kuò)展應(yīng)用

1)awk統(tǒng)計(jì)Web訪(fǎng)問(wèn)排名

在分析Web日志文件時(shí),每條訪(fǎng)問(wèn)記錄的第一列就是客戶(hù)機(jī)的IP地址,其中會(huì)有很多重復(fù)的IP地址。因此只用awk提取出這一列是不夠的,還需要統(tǒng)計(jì)重復(fù)記錄的數(shù)量并且進(jìn)行排序。

通過(guò)awk提取信息時(shí),利用IP地址作為數(shù)組下標(biāo),每遇到一個(gè)重復(fù)值就將此數(shù)組元素遞增1,最終就獲得了這個(gè)IP地址出現(xiàn)的次數(shù)。

針對(duì)文本排序輸出可以采用sort命令,相關(guān)的常見(jiàn)選項(xiàng)為-r、-n、-k。其中-n表示按數(shù)字順序升序排列,而-r表示反序,-k可以指定按第幾個(gè)字段來(lái)排序

實(shí)現(xiàn)此案例需要按照如下步驟進(jìn)行。

步驟一:統(tǒng)計(jì)Web訪(fǎng)問(wèn)量排名

分步測(cè)試、驗(yàn)證效果如下所述。

1)提取IP地址及訪(fǎng)問(wèn)量

2)對(duì)第1)步的結(jié)果根據(jù)訪(fǎng)問(wèn)量排名

案例4:編寫(xiě)監(jiān)控腳本

本案例要求編寫(xiě)腳本,實(shí)現(xiàn)計(jì)算機(jī)各個(gè)性能數(shù)據(jù)監(jiān)控的功能,具體監(jiān)控項(xiàng)目要求如下:

CPU負(fù)載

網(wǎng)卡流量

內(nèi)存剩余容量

磁盤(pán)剩余容量

計(jì)算機(jī)賬戶(hù)數(shù)量

當(dāng)前登錄賬戶(hù)數(shù)量

計(jì)算機(jī)當(dāng)前開(kāi)啟的進(jìn)程數(shù)量

本機(jī)已安裝的軟件包數(shù)量

步驟

實(shí)現(xiàn)此案例需要按照如下步驟進(jìn)行。

步驟一:準(zhǔn)備工作

1)查看性能數(shù)據(jù)的命令

步驟二:編寫(xiě)參考腳本

1)腳本內(nèi)容如下:

linux中g(shù)rep命令的詳細(xì)解釋

linxu下的grep命令其實(shí)是一個(gè)搜索文件文本的工具。下面由我為大家整理了linux的grep命令的詳細(xì)解釋的相關(guān)知識(shí),希望對(duì)大家有幫助!

一、linux中的grep命令的詳細(xì)解釋

1.作用

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

2.格式

grep [options]

3.主要參數(shù)

[options]主要參數(shù):

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

-I:不區(qū)分大 小寫(xiě)(只適用于單字符)。

-h:查詢(xún)多文件時(shí)不顯示文件名。

-l:查詢(xún)多文件時(shí)只輸出包含匹配字符的文件名。

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

-s:不顯示不存在或無(wú)匹配文本的錯(cuò)誤信息。

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

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

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

^:匹配正則表達(dá)式的開(kāi)始行。

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

\:從匹配正則表達(dá) 式的行開(kāi)始。

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

[ ]:?jiǎn)蝹€(gè)字符,如[A]即A符合要求 。

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

。:所有的單個(gè)字符。

* :有字符,長(zhǎng)度可以為0。

二、linux中的grep命令的詳解實(shí)例

1.grep命令使用簡(jiǎn)單實(shí)例

$ grep ‘test’ d*

顯示所有以d開(kāi)頭的文件中包含 test的行。

$ grep ‘test’ aa bb cc

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

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

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

$ grep ‘w\(es\)t.*\1′ aa

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

2.grep命令使用復(fù)雜實(shí)例

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

$ grep magic /usr/src/Linux/Doc/*

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

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

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

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

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

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

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

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

grep -n pattern files 即可顯示行號(hào)信息

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

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

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

例如:

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

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

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

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

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

Linux常用命令詳解 | find

find 命令的基本結(jié)構(gòu)如下:

find 命令手冊(cè) : man find

find 命令中的 -name 選項(xiàng)可以根據(jù)文件名稱(chēng)進(jìn)行檢索( 區(qū)分大小寫(xiě) )。如需要忽略文件名中的大小寫(xiě),可以使用 -iname 選項(xiàng)。

-name 和 -iname 兩個(gè)選項(xiàng)都支持 wildcards 。如:

例1:查找 /usr 目錄下所有文件名以 .txt 結(jié)尾的文件

例2:查找 /usr 目錄下所有文件名剛好為 4 個(gè)字符的文件

例3:查以大寫(xiě)字母開(kāi)頭的文件

例4:查以?xún)蓚€(gè)小寫(xiě)字母和兩個(gè)數(shù)字開(kāi)頭的txt文件

類(lèi)似的還有:

-lname -ilname

-path -ipath

-regx -iregx

有些時(shí)候,你需要在搜索時(shí)匹配某個(gè)文件或目錄的 完整路徑 ,而不僅僅是匹配文件名。可以使用 -path 或 -ipath 選項(xiàng)。

例1:如查找 /usr 下所有文件名以 .txt 結(jié)尾的文件或目錄,且該文件的父目錄必須是 src ??梢允褂靡韵旅睿?/p>

例2:在當(dāng)前目錄除aa之外的子目錄內(nèi)搜索 txt文件

例3:在當(dāng)前目錄,不再子目錄中,查找txt文件

如果只想搜索得到文件 或 目錄,即不想它們同時(shí)出現(xiàn)在結(jié)果中。可以使用 -type 選項(xiàng)指定文件類(lèi)型。

-type 選項(xiàng)最常用的參數(shù)如下:

例:檢索 /usr 下所有文件名以 python 開(kāi)頭的目錄

find 命令支持 -empty 選項(xiàng)用來(lái)檢索 為空 的文件或目錄??瘴募次募餂](méi)有任何內(nèi)容,空目錄即目錄中沒(méi)有任何文件或子目錄。

例:檢索用戶(hù)主目錄下所有的空目錄

find 命令也允許用戶(hù)對(duì)當(dāng)前的匹配條件進(jìn)行 “反義” (類(lèi)似于 邏輯非 操作)。

如需要檢索 /usr 下所有文件名 不 以 .txt 為后綴的文件??梢允褂靡韵旅睿?/p>

也可以“翻轉(zhuǎn)”任何其他的篩選條件,如:檢索 /usr 下所有內(nèi)容不為空的文件

為了檢索歸屬于特定用戶(hù)的文件或目錄,可以使用 -user 選項(xiàng)。

例:檢索根目錄下所有屬主為 starky 的文件

類(lèi)似于 -user 選項(xiàng), -group 選項(xiàng)則可以根據(jù)文件或目錄的 屬組 進(jìn)行檢索。

有些時(shí)候,需要根據(jù)文件創(chuàng)建或修改的時(shí)間進(jìn)行檢索。

Linux 系統(tǒng)中,與文件相關(guān)聯(lián)的時(shí)間參數(shù)有以下三種:

與此對(duì)應(yīng)的是 find 命令中的 -mtime , -atime 和 -ctime 三個(gè)選項(xiàng)。

這三個(gè)選項(xiàng)的使用遵循以下示例中的規(guī)則:

檢索 /usr 下兩天前被修改過(guò)的文件

如果覺(jué)得 -mtime 等選項(xiàng)以 天 為單位時(shí)間有點(diǎn)長(zhǎng),還可以使用 -mmin , -amin , -cmin 三個(gè)選項(xiàng)。

查找比 aa.txt 新 的文件

查找比 aa.txt 舊 的文件

查找比aa.txt新,比bb.txt舊的文件

-size 選項(xiàng)允許用戶(hù)通過(guò)文件大小進(jìn)行搜索(只適用于文件,目錄沒(méi)有大小……)。

表示文件大小的單位由以下字符組成:

另外,還可以使用 + 或 - 符號(hào)表示 大于 或 小于 當(dāng)前條件。

檢索文件大小高于 1 GB 的文件

find 命令可以使用 -perm 選項(xiàng)以文件權(quán)限為依據(jù)進(jìn)行搜索。

9.1使用符號(hào)形式

例1:如需要檢索 /usr 目錄下權(quán)限為 rwxr-xr-x 的文件,可以使用以下命令:

例2:搜索 /usr 目錄下所有權(quán)限為 r-xr-xr-x (即系統(tǒng)中的所有用戶(hù)都只有讀寫(xiě)權(quán)限)的文件和目錄,可以使用以下命令:

很多時(shí)候,我們只想匹配文件權(quán)限的一個(gè) 子集 。比如,檢索可以直接被任何用戶(hù)執(zhí)行的文件,即只關(guān)心文件的執(zhí)行權(quán)限,而不用管其讀寫(xiě)權(quán)限是什么。

上述的需求可以通過(guò)以下命令實(shí)現(xiàn):

其中 a=x 前面的 / 符號(hào)即用來(lái)表示只匹配權(quán)限的某個(gè)子集(執(zhí)行權(quán)限),而不用關(guān)心其他權(quán)限的具體設(shè)置。

9.2使用數(shù)字形式

例如:搜索 /usr 目錄下權(quán)限為 644 (即 rwxr-xr-x )的文件

find 命令默認(rèn)是以 遞歸 的方式檢索項(xiàng)目的,這有時(shí)候會(huì)導(dǎo)致得到的結(jié)果數(shù)量非常巨大??梢允褂? -maxdepth 限制 find 命令遞歸的層數(shù)。

例如:搜索時(shí)向下遞歸的層數(shù)最大為 3

在之前的例子中有出現(xiàn)多個(gè)搜索條件的 組合 以及對(duì)某個(gè)搜索條件的 反轉(zhuǎn) 。

實(shí)際上 find 命令支持 “and” 和 “or” 兩種邏輯運(yùn)算,對(duì)應(yīng)的命令選項(xiàng)分別是 -a 和 -o 。通過(guò)這兩個(gè)選項(xiàng)可以對(duì)搜索條件進(jìn)行更復(fù)雜的組合。

此外還可以使用 小括號(hào) 對(duì)搜索條件進(jìn)行 分組 。注意 find 命令中的小括號(hào)常需要用 單引號(hào) 包裹起來(lái)。因小括號(hào)在 Shell 中有特殊的含義。

如檢索 /usr 下文件名以 python 開(kāi)頭且類(lèi)型為目錄的文件

該命令等同于:

更復(fù)雜的組合形式如:

例4:在除dir0及子目錄以外的目錄下查找txt后綴文件

說(shuō)明:-a 應(yīng)該是and的縮寫(xiě),意思是邏輯運(yùn)算符‘與’(); -o應(yīng)該是or的縮寫(xiě),意思是邏輯運(yùn)算符‘或’(||), -not 表示非.

命令行的意思是:如果目錄dir0存在(即-a左邊為真),則求-prune的值,-prune 返回真,‘與’邏輯表達(dá)式為真(即-path './dir0*' -a -prune 為真),find命令將在除這個(gè)目錄以外的目錄下查找txt后綴文件并打印出來(lái);如果目錄dir0不存在(即-a左邊為假),則不求值-prune ,‘與’邏輯表達(dá)式為假,則在當(dāng)前目錄下查找所有txt后綴文件。

-delete 選項(xiàng)可以用來(lái)刪除搜索到的文件和目錄。

例如:刪除 home 目錄下所有的空目錄:

-exec 選項(xiàng)可以對(duì)搜索到的結(jié)果執(zhí)行執(zhí)行該參數(shù)所給出的shell命令。形式為 command {} \; ,注意{}與\;之間有空格 。每當(dāng) find 命令檢索到一個(gè)符合條件的文件,會(huì)使用其完整路徑取代命令中的 {} ,然后執(zhí)行 -exec 后面的命令一次。

例1:如需要將 home 目錄下所有的 MP3 音頻文件復(fù)制到移動(dòng)存儲(chǔ)設(shè)備(假設(shè)路徑是 /media/MyDrive ),可使用下面的命令:

其中的 大括號(hào) ( {} )作為檢索到的文件的 占位符 ,而分號(hào)( ; )作為命令結(jié)束的標(biāo)志。因?yàn)榉痔?hào)是 Shell 中有特殊含義的符號(hào),所以需要使用單引號(hào)括起來(lái)或前面加上轉(zhuǎn)義符 \ 。

例2:查看當(dāng)前目錄下的所有普通文件,并在 - exec 選項(xiàng)中使用 ls -l 命令將它們列出

例3:在多個(gè)文件中檢索某個(gè)指定的字符串。如在用戶(hù)主目錄下的所有文件中檢索字符串 hello ,可以使用如下命令:

創(chuàng)建 Gzip 格式的壓縮文件的命令為:

現(xiàn)在假設(shè)需要將用戶(hù)主目錄下所有的 MP3 文件添加到壓縮包 music.tar.gz 中,直觀的感覺(jué)是,其命令應(yīng)為如下形式:

實(shí)際情況是,這樣得到的 music.tar.gz 其實(shí)只包含一個(gè) MP3 文件。原因是 find 命令 每次 發(fā)現(xiàn)一個(gè)音頻文件,都會(huì)再執(zhí)行一次 -exec 選項(xiàng)后面的壓縮命令。導(dǎo)致先前生成的壓縮包被覆蓋。

可以先讓 find 命令檢索出所有符合條件的音頻文件,再將得到的 文件列表 傳遞給后面的壓縮命令。完整的命令如下:

如果想瀏覽搜索到的文件(目錄)的詳細(xì)信息(如權(quán)限和大小等),可以直接使用 -ls 選項(xiàng)。

例如:瀏覽所有 1G 以上大小的文件的詳細(xì)信息

與exec作用相同,區(qū)別在于,在執(zhí)行命令之前,都會(huì)給出提示,讓用戶(hù)確認(rèn)是否執(zhí)行

與 exec 作用相同 ,起承接作用。區(qū)別在于 |xargs 主要用于承接刪除操作 ,而 -exec 都可用 如復(fù)制、移動(dòng)、重命名等

例1:查找以ap或may開(kāi)頭的文件

例2:查硬連接數(shù)大于2的文件或目錄

例3:查找含特定字符串的文件。查找當(dāng)前目錄下含有"the string you want find…"字符串的文件:

例4:從根目錄開(kāi)始查tmpfile,一旦查到馬上刪除

例5:如何用find查找某一天更改的文件?可以使用這一行命令來(lái)實(shí)現(xiàn):

A Guide to the Linux “Find” Command

網(wǎng)頁(yè)題目:linux提取命令詳解,你知道哪些獲取Linux基本信息的常用命令
標(biāo)題網(wǎng)址:http://muchs.cn/article40/hcijho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、標(biāo)簽優(yōu)化網(wǎng)站維護(hù)、小程序開(kāi)發(fā)響應(yīng)式網(wǎng)站、域名注冊(cè)

廣告

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

綿陽(yáng)服務(wù)器托管