在 linux 系統中,有三個強大的文字分析處理工具:grep sed awk,其中:
grep 用於搜尋文字內容 =>
linux grep 命令常見用法
sed 用於編輯文字內容 =>
linux sed 命令常見用法
awk 用於處理和生成報表 =>
linux awk 命令常見用法
這幾個命令用來對資料流進行處理的,其工作原理都是將檔案內容逐行讀入,逐行處理。
sed 的全稱是 「stream editor」 (資料流編輯器),從這個名字也可以看出,sed 是以資料流的方式對文字內容進行編輯的,而最常見的用法就是對文字中的特定字串進行替換或者刪除,下面結合例項簡單介紹 sed 命令的常見用法:
假設檔案 fin.txt 中的內容如下:
hello jobshello 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...