1. 程式人生 > >綜合案例分析(sort,cut,正則)

綜合案例分析(sort,cut,正則)

sbin ati bsp ima 如何 難點 一次 方法 當前

1、 找出ifconfig “網卡名” 命令結果中本機IPv4地址

分析:

技術分享

解釋:要取出ip地址,首先我們可以先取出ip所在的行,即取行;可以結合head和tail,後面會有

更好的方法去取行,取列當然會想到cut命令,但是此例中,我們要考慮分隔符(空格和冒號),

因此tr的引入,會使題目變得更加簡單。

答:

技術分享

在這裏小編僅提供一種比較好的方法。

2.查出分區空間使用率的最大百分比值

分析:

技術分享

解釋;先附上一張df查看的結果,比較容易解釋

技術分享

首先我們可以用df查看分區,很明顯我們需要的是第5列,自然而然會考慮使用cut命令,但是第一列和第二列

中間的空格長度不一,我們利用以往的經驗會使用tr這個命令,可以將空格壓縮,而且還能轉化為自己想要的

間隔符那麽接下來就是排序了。

答:

技術分享

這樣就很容易知道分區的最大利用率了。

3.查出用戶UID最大值的用戶名、UID及shell類型

分析:

技術分享

解釋:首先取出文件/etc/passwd中含有用戶名.UID.以及shell類型的列,不難記憶,分別是1,3,7這三列,

我們可以用cut命令將這三列取出,然後根據sort的功能,根據uid大小排序,這也是比較容易的。

答:

技術分享

需要區分cut和sort的分隔符,cut的是 -d -f sort的是-t -k。

4.查出/tmp的權限,以數字方式顯示

分析:

技術分享

解釋:說到權限,最容易想到的自然是使用ls命令,很容查看到文件的權限,當然查看到的是用字符表示的,

和題意是不符的,我們可能會想對字符做一個轉化,但是以目前接觸到的命令,還是無法解決,那麽有沒有

更簡單的方法,直接截取到數字表示的權限。還記得我們如何查看atime.mtime以及ctime,使用的是

stat這個命令,使用它也可以查看到數字表示的權限哦。

技術分享

答:

技術分享

知道了stat這個命令可以查看到文件的權限,而且是用數字法表示的,剩下的只是截取的問題了,是不是值得

去學stat這個命令,在這裏還有更簡單的方法,stat -c %a /tmp/一條命令就可以。

5.統計當前連接本機的每個遠程主機IP的連接數,並按從大到小排序

分析:

技術分享

解釋:首先我們可以使用netstat命令查看遠程連接的IP,由於對ip的統計,我們下一步把ip取出來,

這個操作和案例一類似,這裏就不深入研究了,再接著是排序,會使用sort命令也比較容易,統計數量

當然是uniq了,這樣一分析發現題目很簡單呢,以後要學會分析題目,對困難逐個攻破,加油。

答:

技術分享

這樣就很容易得出答案了。

第一次嘗試在博客中添加思維導圖,寫的不好,多多見諒。

6. 找出/etc/passwd中的兩位或三位數

分析:

技術分享

解釋:首先你可以很容易表示出一位數,即[[:digit:]]或[0-9] ,那麽表示2位或3位數也就很簡單了,

可以在後面加上\{2,3\},指定數字重復的次數,這樣可以指定為2位數和3位數,這一題需要考慮的是錨定詞首和詞尾,

如果不錨定,篩選的範圍就會變大,4位數5位數也會被包含在內,因此需要加上\<.\>.

答:

技術分享

7. 顯示CentOS6上所有系統用戶的用戶名和UID

分析:

技術分享

解釋:

首先利用cut命令截取/etc/passwd的第一列和第三列是比較容易的,接下來是從這些用戶中篩選出系統用戶,

而篩選系統用戶的條件是UID<500,如何用正則表達式表示出小於500的數,成為這一題的難點,不過我們先前知道

表示一位可以用[0-9] 那表示一個範圍呢?也就不是那麽的困難了,\([0-9]{0,2}\|[1-4][0-9]{2},還有就是註意用戶名可能

是個數字而且在500以內,所以就必須限定範圍和位置。

答:

技術分享

表示0-499的數字還有別的方法,課余同學們可以好好探討。

8.添加用戶bash、testbash、basher、sh、nologin(其shell

為/sbin/nologin),找出/etc/passwd用戶名同shell名的行。

分析:

技術分享

解釋:首先是關於創建用戶的,在這裏我們創建用戶是沒有困難的,關鍵是如何滿足後面的條件,即用戶名同shell名,

前面和後面的相同我們自然會想到使用後向引用,但是用戶名是未知的該如何表示,那當然使用(.*)了,但是 這裏需要

限制用戶名的位置,所以就會知道^\(.*\)\>,這樣第一步就完成了,中間的內容我們不關心,所以可以用.*替代,接著是結尾的處理,

既然是後向引用,那麽\1肯定少不了,關鍵是在什麽位置匹配,那當然是行尾即\1$,還有一點要註意那就是只限制了\1在行尾,

還要限制\1左邊的位置,即加上\/將/作為左邊的分界線。

答:

技術分享

這是一題典型的後向引用的題目,要多實驗,在實驗中尋求更多的解決方法。

綜合案例分析(sort,cut,正則)