sed在處理文字時是逐行讀取檔案內容,讀到匹配的行就根據指令做操作,不匹配就跳過。
一 sed總體概述
sed是linux下一款功能強大的非互動流式文字編輯器,可以對文字檔案進行增、刪、改、查等操作,支援按行、按欄位、按正則匹配文字內容,靈活方便,特別適合於大檔案的編輯。本文主要介紹sed的一些基本用法,並通過shell指令碼演示sed的使用例項。
1.sed的使用方法,呼叫sed 命令的語法有兩種:
1)在命令列指定sed指令對文字進行處理:sed +選項 『指令』 檔案
2) 先將sed指令儲存到檔案中,將該檔案作為引數進行呼叫:sed +選項 -f 包含sed指令的檔案 檔案
sed的常用選項:
-i:直接對內容進行修改,不加-i時預設只是預覽,不會對檔案做實際修改
-n:取消預設輸出,sed缺省會輸出所有文字內容,使用-n引數後只顯示處理過的行
a:追加 向匹配行後面插入內容
c:更改 更改匹配行的內容
i:插入 向匹配行前插入內容
d:刪除 刪除匹配的內容
s:替換 替換掉匹配的內容
p:列印 列印出匹配的內容,通常與-n選項和用
=:用來列印被匹配的行的行號
n:讀取下一行,遇到n時會自動跳入下一行
二 sed命令示例
(1)向檔案中新增或插入行
sed '3ayou are handsome' test_ww.txt #向第三行加內容(you are handsome) 3表示行號 a表示追加
執行命令後,如圖
sed '/wangwei/ahello' test_ww.txt #向內容wangwei後面新增hello,如果檔案中有多行包括wangwei,則每一行後面都會新增
sed '$ahi' test_ww.txt #在最後一行新增hi,$匹配最後一行
sed '3ihi' test_ww.txt #在第三行之前插入hi
示例2:更改檔案中指定的行
sed '1ctesthi' test_ww.txt #將檔案test_ww.txt的第一行替換為testhi,1表示行號,c表示為替換動作
sed '/wangwei/clinyong' test_ww.txt #將包含wangwei的行替換為linyong
sed '$ckeep' test_ww.txt #將最後一行替換為keep
示例3:刪除檔案中的行
sed '2d' test_ww.txt #刪除第二行
sed '1~2d' test_ww.txt #從第一行開始刪除,每隔2行就刪掉一行,即刪除奇數行
sed '1,2d' test_ww.txt #刪除1~2行
sed '1,2!d' test_ww.txt #刪除1~2之外的所有行
sed '/hello/d' test_ww.txt #刪除匹配hello的行
sed '/wangwei/,$d' test_ww.txt #刪除從匹配wangwei的行到最後一行
sed '1,3' test_ww.txt #刪除1~3行中,匹配內容wangwei的行,1,3表示匹配1~3行,表示刪除匹配wangwei的行
sed '/^$/d' test_ww.txt #刪除空行
示例4:替換檔案中的內容
sed 's/hello/hello world/' test_ww.txt #將檔案中的hello替換為hello world,預設只替換每行第乙個hello
sed 's/hello/hello world/g' test_ww.txt #將文字中所有的hello都替換為hello world
sed 's/^#.*//' test_ww.txt #將1.txt檔案中以#開頭的行替換為空行,即注釋的行 ( ^#)表示匹配以#開頭,(.*)代表所有內容
最後,總結一下shell本身擷取字串的一些方法
linux sed命令 用法
sed是乙個很好的檔案處理工具,本身是乙個管道命令,主要是以行為單位進行處理,可以將資料行進行替換 刪除 新增 選取等特定工作,下面先了解一下sed的用法 sed命令列格式為 sed nefri command 輸入文字 常用選項 n 使用安靜 silent 模式。在一般 sed 的用法中,所有來自...
linux sed學習總結
sed 基本用法 最終列印 列印出模式空間中的經過處理後剩下的文字 man sed sed option addresscommand file.n 靜默模式,只顯示符合條件的行 i 直接修改原始檔 會修改到原檔案,注意 e script e script 同時執行多個指令碼 f path to s...
linux sed命令的用法
sed基本用法 sed stream editor 行編輯器 全屏編輯器 vi sed 模式空間 預設不編輯原檔案,僅對模式空間中的資料做處理 而後,處理結束後,將模式空間列印至螢幕 sed options addresscommand file n 靜默模式,不再預設顯示模式空間中的內容 i 直接...