- grep 更适合單純的查找或比對文本
- sed 更适合編輯比對到的文本
- awk 更适合格式化文本,對文本進行較複雜格式處理
一、grep
文法
grep [-abcEFGhHilLnqrsvVwxy][-A<顯示列數>][-B<顯示列數>][-C<顯示列數>][-d<進行動作>][-e<範本樣式>][-f<範本檔案>][--help][範本樣式][檔案或目錄...]
- -a 或 --text : 不要忽略二進制的資料。
- -A<顯示行數> 或 --after-context=<顯示行數> : 除了顯示符合範本樣式的那一列之外,并顯示該行之後的内容。
- -b 或 --byte-offset : 在顯示符合樣式的那一行之前,标示出該行第一個字元的編号。
- -B<顯示行數> 或 --before-context=<顯示行數> : 除了顯示符合樣式的那一行之外,并顯示該行之前的内容。
- -c 或 --count : 計算符合樣式的列數。
- -C<顯示行數> 或 --context=<顯示行數>或-<顯示行數> : 除了顯示符合樣式的那一行之外,并顯示該行之前後的内容。
- -d <動作> 或 --directories=<動作> : 當指定要查找的是目錄而非檔案時,必須使用這項參數,否則grep指令将回報資訊并停止動作。
- -e<範本樣式> 或 --regexp=<範本樣式> : 指定字元串做為查找檔案内容的樣式。
- -E 或 --extended-regexp : 将樣式為延伸的普通表示法來使用。
- -f<規則檔案> 或 --file=<規則檔案> : 指定規則檔案,其内容含有一個或多個規則樣式,讓grep查找符合規則條件的檔案内容,格式為每行一個規則樣式。
- -F 或 --fixed-regexp : 将樣式視為固定字元串的清單。
- -G 或 --basic-regexp : 将樣式視為普通的表示法來使用。
- -h 或 --no-filename : 在顯示符合樣式的那一行之前,不标示該行所屬的檔案名稱。
- -H 或 --with-filename : 在顯示符合樣式的那一行之前,表示該行所屬的檔案名稱。
- -i 或 --ignore-case : 忽略字元大小寫的差别。
- -l 或 --file-with-matches : 列出檔案内容符合指定的樣式的檔案名稱。
- -L 或 --files-without-match : 列出檔案内容不符合指定的樣式的檔案名稱。
- -n 或 --line-number : 在顯示符合樣式的那一行之前,标示出該行的列數編号。
- -q 或 --quiet或--silent : 不顯示任何資訊。
- -r 或 --recursive : 此參數的效果和指定"-d recurse"參數相同。
- -s 或 --no-messages : 不顯示錯誤資訊。
- -v 或 --revert-match : 顯示不包含比對文本的所有行。
- -V 或 --version : 顯示版本資訊。
- -w 或 --word-regexp : 隻顯示全字元合的列。
- -x --line-regexp : 隻顯示全列符合的列。
- -y : 此參數的效果和指定"-i"參數相同。
二、sed
文法
sed [-hnV][-e<script>][-f<script檔案>][文本檔案]
參數說明:
- -e<script>或--expression=<script> 以選項中指定的script來處理輸入的文本檔案。
- -f<script檔案>或--file=<script檔案> 以選項中指定的script檔案來處理輸入的文本檔案。
- -h或--help 顯示幫助。
- -n或--quiet或--silent 僅顯示script處理後的結果。
- -V或--version 顯示版本資訊。
動作說明:
- a :新增, a 的後面可以接字串,而這些字串會在新的一行出現(目前的下一行)~
- c :取代, c 的後面可以接字串,這些字串可以取代 n1,n2 之間的行!
- d :删除,因為是删除啊,是以 d 後面通常不接任何咚咚;
- i :插入, i 的後面可以接字串,而這些字串會在新的一行出現(目前的上一行);
- p :列印,亦即将某個選擇的資料印出。通常 p 會與參數 sed -n 一起運作~
- s :取代,可以直接進行取代的工作哩!通常這個 s 的動作可以搭配正規表示法!例如 1,20s/old/new/g 就是啦!
三、awk
文法
awk [選項參數] 'script' var=value file(s)
或
awk [選項參數] -f scriptfile var=value file(s)
選項參數說明:
-
-F fs or --field-separator fs
指定輸入檔案折分隔符,fs是一個字元串或者是一個正規表達式,如-F:。
-
-v var=value or --asign var=value
指派一個使用者定義變量。
-
-f scripfile or --file scriptfile
從腳本檔案中讀取awk指令。
-
-mf nnn and -mr nnn
對nnn值設定内在限制,-mf選項限制配置設定給nnn的最大塊數目;-mr選項限制記錄的最大數目。這兩個功能是Bell實驗室版awk的擴充功能,在标準awk中不适用。
-
-W compact or --compat, -W traditional or --traditional
在相容模式下運作awk。是以gawk的行為和标準的awk完全一樣,所有的awk擴充都被忽略。
-
-W copyleft or --copyleft, -W copyright or --copyright
列印簡短的版權資訊。
-
-W help or --help, -W usage or --usage
列印全部awk選項和每個選項的簡短說明。
-
-W lint or --lint
列印不能向傳統unix平台移植的結構的警告。
-
-W lint-old or --lint-old
列印關于不能向傳統unix平台移植的結構的警告。
-
-W posix
打開相容模式。但有以下限制,不識别:/x、函數關鍵字、func、換碼序列以及當fs是一個空格時,将新行作為一個域分隔符;操作符**和**=不能代替^和^=;fflush無效。
-
-W re-interval or --re-inerval
允許間隔正規表達式的使用,參考(grep中的Posix字元類),如括号表達式[[:alpha:]]。
-
-W source program-text or --source program-text
使用program-text作為源代碼,可與-f指令混用。
-
-W version or --version
列印bug報告資訊的版本。