找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1761|回復(fù): 0
收起左側(cè)

linux正則表達(dá)式

[復(fù)制鏈接]
ID:107189 發(fā)表于 2016-3-5 23:17 | 顯示全部樓層 |閱讀模式
linux正則表達(dá)式 grep egrep用法 shell命令執(zhí)行的相應(yīng)順序&& 令1 && 命令2 如果這個(gè)命令1執(zhí)行成功& &那么執(zhí)行這個(gè)命2

  mv myfile myfile2 && echo "if you are seeing this then mv was success!"

  || 如果| |左邊的命令(命令1)未執(zhí)行成功,那么就執(zhí)行| |右邊的命令(命令2)

  mv myfile myfile2 && echo "if you are seeing this then mv was success! "

  從一個(gè)審計(jì)文件中抽取第1個(gè)和第2個(gè)域,并將其輸出到一個(gè)臨時(shí)文件中,如果這一操作未成功,我希望能夠收到一個(gè)相應(yīng)郵件:

  awk '{print$1,$2}' test3 >test2 || echo "sorry the extraction didn't work " | mail root

  (命令1;命令2;. . .)如果使用{ }來代替(),那么相應(yīng)的命令將在子s h e l l而不是當(dāng)前s h e l l中作為一個(gè)整體被執(zhí)行,只有在{ }中所有命令的輸出作為一個(gè)整體被重定向時(shí),其中的命令才被放到子s h e l l中執(zhí)行,否則在當(dāng)前s h e l l執(zhí)行。

  例子:

  如果s o r t命令執(zhí)行成功了,可以先將輸出文件備份,然后再打印

  test.sorted && (cp test.sorted test.sorted_bak ;lp test.sorted)

  經(jīng)常使用的正則表達(dá)式舉例^ 行首

  $ 行尾

  ^ [ t h e ] 以t h e開頭行

  [ S s ] i g n a [ l L ] 匹配單詞s i g n a l、s i g n a L、S i g n a l、S i g n a L

  [Ss]igna[lL]". 同上,但加一句點(diǎn)

  [ m a y M A Y ] 包含m a y大寫或小寫字母的行

  ^ U S E R $ 只包含U S E R的行

  [tty]$ 以t t y結(jié)尾的行

  " . 帶句點(diǎn)的行

  ^ d . . x . . x . . x 對(duì)用戶、用戶組及其他用戶組成員有可執(zhí)行權(quán)限的目錄

  ^ [ ^ l ] 排除關(guān)聯(lián)目錄的目錄列表

  ^[^d] ls –l | grep ^[^d] 只顯示非文件夾的文件

  [ . * 0 ] 0之前或之后加任意字符

  [ 0 0 0 * ] 0 0 0或更多個(gè)

  [ iI] 大寫或小寫I

  [ i I ] [ n N ] 大寫或小寫i或n

  [ ^ $ ] 空行

  [ ^ . * $ ] 匹配行中任意字符串

  ^ . . . . . . $ 包括6個(gè)字符的行

  [a- zA-Z] 任意單字符

  [ a - z ] [ a - z ] * 至少一個(gè)小寫字母

  [ ^ 0 - 9 " $ ] 非數(shù)字或美元標(biāo)識(shí)

  [ ^ 0 - 0 A - Z a - z ] 非數(shù)字或字母

  [ 1 2 3 ] 1到3中一個(gè)數(shù)字

  [ D d ] e v i c e 單詞d e v i c e或D e v i c e

  D e . . c e 前兩個(gè)字母為D e,后跟兩個(gè)任意字符,最后為c e

  " ^ q 以^ q開始行

  ^ . $ 僅有一個(gè)字符的行

  ^".[0-9][0-9] 以一個(gè)句點(diǎn)和兩個(gè)數(shù)字開始的行

  ' " D e v i c e " ' 單詞d e v i c e

  D e [ V v ] i c e " . 單詞D e v i c e或d e v i c e

  [ 0 - 9 ] " { 2 " } - [ 0 - 9 ] " { 2 " } - [ 0 - 9 ] " { 4 " } 對(duì)日期格式d d - m m - y y y y

  [ 0 - 9 ] " { 3 " } " . [ 0 - 9 ] " { 3 " } " . [ 0 - 9 ] " { 3 " } " . [ 0 - 9 ] " { 3 " } I P地址格式

  [ ^ . * $ ] 匹配任意行

  [A-Za-z]* 匹配所有單詞

  常用的g r e p選項(xiàng)-c 只輸出匹配行的計(jì)數(shù)。

  -i 不區(qū)分大小寫(只適用于單字符)。

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

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

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

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

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

  例子

  grep -v "Sort" tab2 顯示不包含匹配文本的所有行

  grep -n "Sort" tab2 顯示匹配行及行號(hào)

  grep -c "Sort" tab2 只輸出匹配行的計(jì)數(shù)

  精確匹配: grep "01">" tab2

  grep -in "code" tab2 忽略大小寫

  多次過濾

  grep -in "code" tab2 | grep "02"

  使用grep匹配“與”或者“或”模式

  g r e p命令加- E參數(shù),這一擴(kuò)展允許使用擴(kuò)展模式匹配。例如,要抽取城市代碼為2 1 9或2 1 6,方法如下:

  grep –E ‘219|216’ tab2

  g r e p允許使用國(guó)際字符模式匹配或匹配模式的類名形式。類 等價(jià)的正則表達(dá)式

  [ [ : u p p e r : ] ] [ A - Z ]

  [ [ : a l n u m : ] ] [ 0 - 9 a - zA-Z]

  [ [ : l o w e r : ] ] [ a - z ]

  [ [ : s p a c e : ] ] 空格或t a b鍵

  [ [ : d i g i t : ] ] [ 0 - 9 ]

  [ [ : a l p h a : ] ] [ a - z A - Z ]

  大多數(shù)系統(tǒng)管理員稱 / d e v / n u l l為比特池, 可以將之看成一個(gè)無底洞,有進(jìn)沒有出,永遠(yuǎn)也不會(huì)填滿。

  要查看D N S服務(wù)器是否正在運(yùn)行(通常稱為n a m e d),方法如下

  ps -ef | grep "name"|grep -v "grep"

  e g r e pe g r e p接受所有的正則表達(dá)式,一個(gè)顯著特性是可以以一個(gè)文件作為保存的字符串,然后將之傳給e g r e p作為參數(shù),為此使用- f開關(guān)。

  egrep -f par2 tab2 par2是文件,里面包括各種匹配的具體格式

  如果要查詢存儲(chǔ)代碼3 2 L或2 C C,可以使用(|)符號(hào),意即“|”符號(hào)兩邊之一或全部。

  egrep '(Code|Sort)' tab2


回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表