grep的使用及正則表達式

1.常用選項:

       -E :開啓擴展(Extend)的正則表達式。

  -i :忽略大小寫(ignore case)。

  -v :反過來(invert),只打印沒有匹配的,而匹配的反而不打印。

  -n :顯示行號

  -w :被匹配的文本只能是單詞,而不能是單詞中的某一部分,如文本中有liker,而我搜尋的只是like,就可以使用-w選項來避免匹配liker

  -c :顯示總共有多少行被匹配到了,而不是顯示被匹配到的內容,注意如果同時使用-cv選項是顯示有多少行沒有被匹配到。

  -o :只顯示被模式匹配到的字符串。

  --color :將匹配到的內容以顏色高亮顯示。

  -A  n:顯示匹配到的字符串所在的行及其後n行,after

  -B  n:顯示匹配到的字符串所在的行及其前n行,before

  -C  n:顯示匹配到的字符串所在的行及其前後各n行,context

2.常用表達式參數

\btom\b    “\b"中間tom代表是一個單詞
\d              表示一個數字
\d{2}-\d{8}。 這裏\d後面的{2}({8})的意思是前面\d必須連續重複匹配2次(8次)。
\s               匹配任意的空白符,包括空格,製表符(Tab),換行符,中文全角空格等。
\w       匹配字母或數字或下劃線或漢字等。
.          匹配除換行符以外的任意字符
\d        匹配數字
\b        匹配單詞的開始或結束
^         匹配字符串的開始  //^和$匹配的是行
$         匹配字符串的結束

^\d{5,12}$    填寫的QQ號必須爲5位到12位數字

備註:"\d" 等這些字符只有在perl{正則支持的相對完整} 中能夠使用

轉義): 
    \字符 
重複):
    *            重複零次或更多次
    +            重複一次或更多次
    ?            重複零次或一次
    {n}         重複n次
    {n,}        重複n次或更多次
    {n,m}     重複n到m次

基礎用法

cat 123.txt |grep '\bno\b'
#\b 牟定詞首 或者詞尾,上面表示只匹配no字符,多一個都不行
cat 123.txt |grep '^root.400$'
#^牟定行首,$牟定行尾,表示匹配以root開頭,以400結尾的行
echo "111222333"|grep -o 1.
2
#只顯示匹配到的詞
grep的使用及正則表達式

cat /etc/passwd|grep -n -A 1 '^root.*'
#顯示root行,及下一行,還有行號,-A換成-B就是上一行,換成-C就是上下各1行。
grep的使用及正則表達式

匹配數字
echo "ABC123abc"|grep -o [0-9]|xargs
#匹配出數字,由於grep特性,顯示的數字會豎排顯示,管道送給xargs處理一下

cat cs/testfile.txt |grep -x -n test #-x只顯示完整匹配一行的,-n 加上行號效果和 sed -n '/^test$/=' 差不多
grep的使用及正則表達式

echo "2002 1945 1644 1892 1946"|grep -P '\b(20|19)[0-9]{2}\b'
#表示以20或者19開頭後面兩個字符爲數字,{2}的意思是前面[0-9]必須匹配到兩次,至少匹配到的是4位數,但是兩個\b牟定的詞首和詞尾所以只能的是4位數
grep的使用及正則表達式

高級用法

echo "http://www.ylc520.com/"|grep -oP '.+(?=://)'
#輸出結果 http, 表示以://爲定界 往前匹配,.+ 表示任意字符出現1次或者多次
echo "http://www.ylc520.com/"|grep -oP '(?<=://).+'
#輸出 www.ylc520.com/ ,表示以://爲定界 往後匹配,.+ 表示任意字符出現1次或者多次
echo "http://www.ylc520.com/"|grep -oP '(?<=www.).+(?=.com)'
#輸出結果 ylc520 表示以www. 爲定界往後匹配,同時以.com爲定界往前匹配,.*匹配任意字符任意長度

grep -l -r 'test' cs/
#查找cs文件夾裏包含'test'字符的文件。-l顯示匹配出的文件,不是字符 加-r可以查找文件夾

常用正則表達式

URL地址           https?://[-\w.]+(:\d+)?(/([\w/_.]*)?)?
完整的URL地址    https?://(\w*:\w*@)?[-\w.]+(:\d+)?(/([\w/_.]*(\?\S+)?)?)?
圖片簡單URL地址     https?://[\w/.-\\]+\.((gif)|(jpg)|(png)|(bmp))
電子郵件地址          (\w+\.)*\w+@(\w+\.)+[A-Za-z]+
IP地址                      (((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))\.){3}((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))
HTML註釋            <!-{2,}.*?-{2,}>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章