Linux文字過濾命令grep awk sed

2021-09-08 20:04:17 字數 4631 閱讀 6130

grep的使用:

一、grep一般格式:

grep [選項] 基本正規表示式 [檔案]

這裡的正規表示式可以為字串。在grep命令中輸入字串引數時,最好將其用雙引號括起來。呼叫變數時也可以使用雙引號。在呼叫模式匹配事,應使用單引號。

二、grep常用選項:

-c只輸出匹配行的計數。

-i不區分大小寫(只用於單字元)。

-h查詢多檔案時不顯示檔名。

-l查詢多檔案時只輸出包含匹配字元的檔名。

-n顯示匹配行及行號。

-s不顯示不存在或無匹配文字的錯誤資訊。

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

三、常用選項的使用:

1、 查詢多個檔案:

$grep  「hello」 *.doc

num.doc:hello

sum.doc:hello world

說明在num.doc 和sum.doc中有字串「hello「。

2、 行匹配:

$grep -c 「123」 *.doc

num.doc:2

sum.doc:2

說明在num.doc 和sum.doc中有字串「123「各為兩行。

3、 顯示滿足匹配模式的所有行數:

$grep –n 「123」 *.doc

num.doc:1:hao 123

num.doc:2:hao 123

sum.doc:2:hao 123

sum.doc:4:hao 1234

4、 顯示所有不包含「123「的行:

$grep  -v 「123」 *.doc

num.doc:hello

num.doc:world

sum.doc:hello world

sum.doc:sui yue

5、 精確匹配:

如第三點,匹配「123」時,結果返回了「1234」的其它字串。

$grep -n 「123\>」 *.doc

num.doc:1:hao 123

num.doc:2:hao 123

sum.doc:2:hao 123

6、 大小寫敏感:

預設情況下,grep是大小寫敏感的,如果要查詢大小寫不敏感的字串,必須

使用-i選項。

$grep -i 「just」 *.doc 

num.doc:just

num.doc:just

四、grep和正規表示式

1、模式範圍:

$ grep  『48[34]』 mydata.doc

此命令在mydata.doc中匹配字串「483」和「484」。

2、 不匹配行首:

$ grep  『^[^48]』 mydata.doc

此命令在mydata.doc中匹配除4或者8開頭的行。

3、 設定大小寫:

$ grep  『[ss]ept』  mydata.doc

此命令在mydata.doc中匹配字串「sept」和「sept」。

4、匹配任意字元:

$ grep  『a…z』 mydata.doc

此命令在mydata.doc中匹配字串以字元a開頭和字元z結尾,中間為任意三個字元。

5、 模式出現的機率

$ grep 『1\』 mydata.doc

此命令說明數字1至少出現兩次

awk的使用:

一、awk的呼叫格式:

awk的呼叫格式有三種:

第一種是命令列的方式,如下:

awk [-f field-separator] 『commands』 input-file

[-f]域分隔符,是可選的,awk使用空格作為預設的域分隔符。

第二種方法是將awk命令插入到乙個檔案,並使awk程式可以執行,然後用awk命令直譯器作為指令碼的首行,以便通過鍵入指令碼名稱來呼叫它。

第三種方法是將所有的awk命令插入乙個單獨檔案,然後呼叫:

awk –f awk-script-file input-file

二、動作和模式

任何awk語句都有模式和動作組成。模式部分決定動作語句何時觸發及觸發事件。

模式包括兩個特殊欄位begin和end.,begin語句使用在任何文字瀏覽動作之前,之後文字瀏覽動作依據輸入檔案開始執行,end語句用來在awk完成文字瀏覽動作後列印輸出文字中輸出和結尾狀態標誌。實際動作在大括號內指明。

三、域和記錄

awk執行時,其瀏覽域標記為$1,$2 ….$n.。這種方法稱為域標識。

1、儲存awk輸出

第一種方法:

$awk 『』 mydata.txt >newfile.txt

顯示屏上不會輸出結果。

第二種方法:

$awk 『』 mydata.txt | tee newfile.txt

輸出到檔案中,同時顯示在顯示器上。

2、使用標準輸入

第一種方法:使用awk指令碼輸入檔案格式

$myawk.awk inputfile.txt

第二種方法:使用重定向

$myawk.awk < inputfile.txt

第三種方法:使用管道

$inputfile.txt | myawk.awk

3、列印所有記錄

$awk 『』 myfile.txt

由於沒有模式部分,只有動作部分,動作必須用花括號括起來。

lisi 25 wuhan

wangjian 33 shanghai

caiming 55 shenzhen

4、列印單獨記錄

要用逗號分隔域

$awk 『』 myfile.txt

lisi 25

wangjian 33

caiming 55

5、列印報告頭

$awk 『begin  』 mfile.txt

name age

***************

lisi25

wangjian 33

caiming 55

6、列印資訊尾

$awk 『begin   end 』 mfile.txt

sed的使用:

一、sed呼叫格式

sed呼叫格式有三種:

第一種命令列方式:

sed [option] 『command』 inputfile

command要加單引號,也允許加雙引號。

sed  [option]  –f  sed-script-file inputfile

sed-script-file [option] inputfile

二、sed選項:

f 如果正在呼叫sed指令碼檔案,使用此選項。此選項通知sed指令碼檔案支援所有的sed命令。

三、sed常規用法:

1、 儲存sed 輸出

$ sed  『command』 inputfile > outfile

2、 sed在檔案中查詢文字的方式

sed瀏覽檔案時,預設從第一行開始,有兩種方法定位文字:

第一種:使用行號,可以用簡單數字或是乙個行號範圍。

第二種:使用正規表示式。

sed定位文字的一些方式,如下:

x x表示行號。 

x,y 表示行號範圍從x到y。 

/pattern/ 查詢包含模式的行。 

x,/pattern 通過行號和模式查詢匹配行。 

x,y! 查詢不包含指定行號x到y的行。 

3、 sed編輯命令

p 列印匹配行 

= 顯示檔案行號 

a\ 在定位行號後附加拳文字資訊 

i\ 在定位行號後插入拳文字資訊 

d 刪除定位行 

c\ 用拳文字替換定位文字 

s 使用替換模式替換相應模式 

r 從另乙個檔案中讀文字 

w 寫文字到乙個檔案 

q 第乙個模式匹配完成後推出或立即推出 

l 顯示與八進位制ascii**造價的控制字元 

{} 在定位行執行的命令組 

g 將模式2貼上到/pattern n/ 

y 傳送字元 

n 延續到下一輸入行;允許跨行的模式匹配語句。 

4、 使用p顯示行

$sed -n 『2p』 myfile.txt

hello world!

-n選項,顯示列印定位行。

5、 列印範圍

$sed -n 『1,3p』 myfile.txt

hao 123

hello world!

ni hao ma?

列印1到3行。

6、 列印模式

$sed -n 『/123/』p myfile.txt

hao 123

7、 在指定行號匹配模式

$sed -n 『5,/hao/』p myfile.txt

hao ma?

參考:以上內容**此篇文章)

Linux命令(八)過濾文字 grep

grep是乙個強大的文字搜尋工具命令,用於查詢檔案中符合指定格式的字串,支援正規表示式。如不指定任何檔名稱,或是檔名為 則gerp命令從標準輸入裝置中讀取資料。grep家族包括grepegrep和fgrep。egrep 和 fgrep 命令只跟 grep 有很小的不同。egrep 是 grep 的擴...

Linux文字處理之grep文字過濾命令

grep 縮寫來自globally search a regular expression and print 是一種強大的文字搜尋工具 它能使用特定模式匹配 包括正規表示式 搜尋文字,並預設輸出匹配行 unix的grep家族包括grep egrep和fgrep,windows系統下類似命令find...

linux之文字查詢grep命令

grep是linux下常用的文字查詢命令。grep使用的一般格式為 grep 選項 搜尋內容串 檔名 常用選項 含義 v 顯示不包含匹配文字的所有行 相當於求反 n 顯示匹配行及行號 i 忽略大小寫 例如要查詢某個目錄下所有包含 good 的檔案,並顯示 good 所在行號 grep搜尋內容串可以是...