文字處理工具三劍客(sed,AWK,grep)

2021-10-13 10:36:57 字數 2027 閱讀 3773

二.awk

sed是一種流編輯器,流編輯器會在編輯器處理資料之前基於預先提供的一組規則來編輯資料流。

sed編輯器可以根據命令來處理資料流中的資料,這些命令要麼從命令列中輸入,要麼儲存在乙個命令文字檔案中。

sed的工作流程主要包括讀取、執行和顯示三個過程:

●讀取: sed從輸入流 (檔案、管道、標準輸入) 中讀取一行內容並儲存到臨時的緩衝區中(又稱模式空間,pattern space)

●執行:預設情況下,所有的sed命令都在模式空間中順序地執行,除非指定了行的位址,否則sed命令將會在所有的行上依次執行。

●顯示:傳送修改後的內容到輸出流。在傳送資料後,模式空間將會被清空。在所有的檔案內容都被處理完成之前,上述過程將重複執行,直至所有內容被處理完。

在所有的檔案內容都被處理完成之前,上述過程將重複執行,直至所有內容被處理完。

注意:預設情況下所有的sed命令都是在模式空間內執行的,因此輸入的檔案並不會發生任何變化,除非是用重定向儲存輸出。

選項解釋

-e或- -expression

表示用指定命令來處理輸入的文字檔案,只有乙個操作命令時可省略,一 般在執行多個操作命令使用

-f或- -file

表示用指定的指令碼檔案來處理輸入的文字檔案。

-h或- -help

顯示幫助。

-n、- -quiet或silent

禁止sed編輯器輸出,但可以與p命令一起使用完成輸出。

-i直接修改目標文字檔案。

選項解釋

s替換,替換指定字元。

d刪除,刪除選定的行。

a增加,在當前行下面增加一行指定內容。

i插入,在選定行,上面插入一行指定內容。

c替換,將選定行替換為指定內容。

y字元轉換,轉換前後的字元長度必須相同。

p列印,如果同時指定行,表示列印指定行;如果不指定行,則表示列印所有內容;如果有非列印字元,則以ascii碼輸出。其通常與「-n」選項一起使用

=列印行號

l(小寫的l)

列印資料流中的文字和不可列印的ascii字元(如:結束字元$、製表符\t)

sed命令常用於一整行的處理,而awk比較傾向於將一行分成多個「字段」然後再進行處理。awk資訊的讀入也是逐行讀取的,執行結果可以通過print的功能將字段資料列印顯示。在使用awk命令的過程中,可以使用邏輯操作符「&&」表示「與」、「||」表示「或」、「!」表示「非」;還可以進行簡單的數**算,如+、-、*、/、%、^分別表示加、減、乘、除、取餘和乘方。

awk常見內建變數

專案 | value

選項解釋

- fs

列分割符。指定每行文字的字段分隔符,預設為空格或製表位。與"-f"作用相同

- nf

當前處理的行的字段個數。

- nr

當前處理的行的行號(序數)。

- $0

當前處理的行的整行內容。

- $n

當前處理行的第n個字段(第n列)。

- filename

被處理的檔名。

- rs

行分隔符。awk從檔案上讀取資料時,將根據rs的定義把資料切割成許多條記錄,而awk一次僅讀入一條記錄,以進行處理。預設值是』\n』

文字處理三劍客

文字處理三劍客 劍客一 grep 作用 行 過濾 用法 grep 正規表示式 檔案 路徑 grep e 擴充套件類正規表示式 檔案 路徑 劍客二 sed 用法 sed 選項 位址定位sed命令 檔案 路徑 sed 選項 正規表示式 sed命令 檔案 路徑 sed 選項 位址定位 正規表示式 sed命...

Linux文字處理三劍客

grep 作用 文字搜尋工具,根據使用者指定的 模式對目標檔案逐步進行匹配檢查,列印匹配到的行 grep root etc passwd grep命令選項 grep user etc passwd v 顯示不被pattern 匹配的行 e 僅顯示匹配到的字串 grep user etc passwd...

linux文字處理三劍客

常用引數 v 顯示不能夠被匹配到的行 i 忽略大小寫字元 o 僅顯示匹配到的字串 q 靜默模式,不輸出任何資訊 a 後 行 b 前 行 c 前後各 行 e 使用ere,相當於egrep常用引數 n 只列印模式匹配的行 e 直接在命令列模式上進行sed動作編輯,此為預設選項 f 將sed的動作寫在乙個...