grep 是一個強大的文本搜索工具,能夠使用正則表達式,並返回匹配的行,語法爲:正則表達式
$grep pattern file(s)
「grep」源於 ed(Linux的一個行文本編輯器)的 g/re/p 命令,g/re/p 是「globally search for a regular expression and print all lines containing it」的縮寫,意思是使用正則表達式進行全局檢索,並把匹配的行打印出來。
正則表達式是一個包含了若干特殊字符的字符串,每一個字符都有特殊含義,能夠用來匹配文本,更多信息請查看正則表達式教程。
grep 能夠看作是一個過濾器,若是沒有爲 grep 指定要檢索的文件,那麼它會從標準輸入設備(通常是鍵盤)讀取;其餘過濾器也是如此。
grep 命令最簡單的使用就是檢索包含固定字符的文本。
例如,在管道中使用 grep 命令,只容許包含指定字符的行輸出到顯示器:shell
$ls -l | grep "Aug" -rw-rw-rw- 1 john doc 11008 Aug 6 14:10 ch02 -rw-rw-rw- 1 john doc 8515 Aug 6 15:30 ch07 -rw-rw-r-- 1 john doc 2488 Aug 15 10:51 intro -rw-rw-r-- 1 carol doc 1605 Aug 23 07:35 macros $
grep 命令有不少選項:
express
選項 | 說明 |
---|---|
-v | 反轉查詢,輸出不匹配的行。例如,grep -v "test" demo.txt 將輸出不包含"test"的行。 |
-n | 輸出匹配的行以及行號。 |
-l | 輸出匹配的行所在的文件名。 |
-c | 輸出匹配的總行數。 |
-i | 不區分大小寫進行匹配。 |
下面咱們使用正則表達式來匹配這樣的行:包含字符「carol」,而後包含任意數目(含零個)的其餘字符,最後還要包含「Aug」。
使用 -i 選項進行不區分大小寫的匹配:編輯器
$ls -l | grep -i "carol.*aug" -rw-rw-r-- 1 carol doc 1605 Aug 23 07:35 macros $
sort 命令在 Linux 中很是有用,它將文件中的各行按字母或數進行排序。sort命令既能夠從特定的文件,也能夠從stdin獲取輸入。
例如,對 foot 文件的各行進行排序:工具
$sort food Afghani Cuisine Bangkok Wok Big Apple Deli Isle of Java Mandalay Sushi and Sashimi Sweet Tooth Tio Pepe's Peppers $
經過下面的選項能夠控制排序規則:
ui
選項 | 描述 |
---|---|
-n | 按照數字大小排序,例如,10會排在2後面;-n 選項會忽略空格或 tab縮進。 |
-r | 降序排序。sort 默認是升序排序。 |
-f | 不區分大小寫。 |
+x | 對第x列(從0開始)進行排序。 |
下面的例子經過管道將 ls、grep 和 sort 命令連起來使用,過濾包含「Aug」的行,並按照文件大小排序:spa
$ls -l | grep "Aug" | sort +4n -rw-rw-r-- 1 carol doc 1605 Aug 23 07:35 macros -rw-rw-r-- 1 john doc 2488 Aug 15 10:51 intro -rw-rw-rw- 1 john doc 8515 Aug 6 15:30 ch07 -rw-rw-rw- 1 john doc 11008 Aug 6 14:10 ch02 $
上面的命令,對當前目錄中八月份修改的文件按照大小排序;+4n 表示對第5列按照數字大小排序。.net
若是文件內容過多,所有顯示會很亂,能夠使用 pg 和 more 命令分頁顯示,每次只顯示一屏。
例如,經過管道,使用more命令顯示目錄中的文件:code
$ls -l | grep "Aug" | sort +4n | more -rw-rw-r-- 1 carol doc 1605 Aug 23 07:35 macros -rw-rw-r-- 1 john doc 2488 Aug 15 10:51 intro -rw-rw-rw- 1 john doc 8515 Aug 6 15:30 ch07 -rw-rw-r-- 1 john doc 14827 Aug 9 12:40 ch03 . . . -rw-rw-rw- 1 john doc 16867 Aug 6 15:56 ch05 --More--(74%)
如上,一次只顯示一屏文本,顯示滿後,停下來,並提示已顯示所有內容的百分比,按空格鍵(space)能夠查看下一屏,按 b 鍵能夠查看上一屏。排序