linux sed 命令常見用法

2022-01-29 06:11:51 字數 3135 閱讀 2414

在 linux 系統中,有三個強大的文字分析處理工具:grep  sed  awk,其中:

grep   用於搜尋文字內容      => 

linux grep 命令常見用法

sed    用於編輯文字內容       => 

linux sed  命令常見用法

awk   用於處理和生成報表    => 

linux awk 命令常見用法

這幾個命令用來對資料流進行處理的,其工作原理都是將檔案內容逐行讀入,逐行處理。

sed 的全稱是 「stream editor」 (資料流編輯器),從這個名字也可以看出,sed 是以資料流的方式對文字內容進行編輯的,而最常見的用法就是對文字中的特定字串進行替換或者刪除,下面結合例項簡單介紹 sed 命令的常見用法:

假設檔案 fin.txt 中的內容如下:

hello jobs

hello pony

hello jack, hi jack

1. 把每一行中的 jack 替換成 mark

sed

's/jack/mark/

' fin.txt

>>hello jobs

hello pony

hello mark, hi jack

sed 命令一般是寫在單引號內,引號內開頭的 s 表示替換(substitute),

需要注意的是,在預設情況下,sed 只會替換每行中匹配到的第乙個字串,所以上面例子中最後一行的第二個 jack 沒有被替換,如果希望替換每一行中所有匹配到的字串,需加在命令末尾上選項 g,比如:

sed

's/jack/mark/g

'fin.txt

>>hello jobs

hello pony

hello mark, hi mark

注意這條命令並不會修改檔案 fin.txt 的內容,只是將檔案中的每一行讀入快取,執行替換,然後輸出到螢幕,檔案內容並沒有發生改變。

如果希望直接修改檔案內容,可加上選項 「 -i 」

sed -i '

s/jack/mark/g

' fin.txt

2. 將 2~3 行中的 hello 替換成 hey

sed

'2,3s/hello/hey/g

'fin.txt

>>hello jobs

hey pony

hey jack, hi jack

這條命令開頭的 2,3 表示僅在第 2 至第 3 行執行替換

3. 找出包含字元 pony 的那些行,將這些行中的 hello 替換成 hey

sed

'/pony/s/hello/hey/g

'fin.txt

>>hello jobs

hey pony

hello jack, hi jack

這裡的 pony 是正規表示式,所以需要用 // 括起來

4. 刪除 2~3 行

sed

'2,3d

'fin.txt

>>hello jobs

命令中的 d 表示刪除(delete),執行之後第 2~3 行就被刪除了,僅剩下第一行

5. 刪除包含字串 pony 的行

sed

'/pony/d

'fin.txt

>>hello jobs

hello jack, hi jack

這裡的 pony 也是正規表示式,所以用 // 括起來了

6. 刪除空白行

sed

'/^$/d

' fin.txt

這裡的 ^ 匹配一行的開頭, $ 匹配一行的結尾,所以 /^$/ 就表示一行的開頭和結尾之間沒有任何內容,也就是空白行;

注意有時候有些空白行是包含空格的,這種情況就需要寫成:

sed

'/^\s*$/d

' fin.txt

其中 \s 表示空格, 星號 * 表示前面的字元重複 0 次或多次,所以這種寫法可以匹配那些包含任意個空格的空白行

7. 刪除不包含字元 pony 的行

sed

'/pony/\!d

' fin.txt

這裡的感嘆號 ! 表示反選,也就是選擇那些不符合正規表示式 /pony/ 的行, 右斜槓表示轉義, 因為在有些系統下 ! 會被識別成其他的意思

8. 在指定某一行的前面或者後面新增一行

sed -i '

1i\welcome

'fin.txt

>>welcome

hello jobs

hello pony

hello jack, hi jack

這裡的 1 表示第一行, i 表示在這一行前面新增一行,如果要在第一行後面新增一行,則用字母 a :

sed -i  '

1a\welcome

' fin.txt

字母 i  是 insert, 在前面新增一行

9. 在匹配行的前面或者後面新增一行

sed -i  '

/pony/a\welcome

'fin.txt

>>hello jobs

hello pony

welcome

hello jack, hi jack

同樣,在後面新增一行用字母 a,在前面新增一行用字母 i

sed -i  '

/pony/i\welcome

' fin.txt

以上只是 sed 的常見用法,sed 的用法其實還有很多,

|--------------------------------------|

linux sed命令 用法

sed是乙個很好的檔案處理工具,本身是乙個管道命令,主要是以行為單位進行處理,可以將資料行進行替換 刪除 新增 選取等特定工作,下面先了解一下sed的用法 sed命令列格式為 sed nefri command 輸入文字 常用選項 n 使用安靜 silent 模式。在一般 sed 的用法中,所有來自...

linux sed命令的用法

sed基本用法 sed stream editor 行編輯器 全屏編輯器 vi sed 模式空間 預設不編輯原檔案,僅對模式空間中的資料做處理 而後,處理結束後,將模式空間列印至螢幕 sed options addresscommand file n 靜默模式,不再預設顯示模式空間中的內容 i 直接...

Linux sed命令(基礎和高階用法)

1 sed是流編譯器,是文字處理非常常用的工具,也是使用正規表示式進行匹配,預設為基準模式。基本格式為 1 sed option script file 其中script為 pattern action pattern為正規表示式,action為編輯操作。如果沒有pattern,則對所有行進行act...