Shell中的流編輯器sed

2021-09-19 19:15:00 字數 1977 閱讀 4653

sed編輯器被稱作流編輯器(stream editor),和普通的互動式文字編輯器恰好相反。

在互動式文字編輯器中(比如vim),你可以用鍵盤命令來互動式地插入、刪除或替換資料中的文字。

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

sed [options] command file(s)

sed [options] -f scriptfile file(s)

sed 的返回值總是0,不管是否找到指定模式,退出狀態總是0;

只有當命令存在語法錯誤是,退出狀態才是非0;

支援正規表示式:sed -r 可以支援擴充套件元字元 \

#列印,sed常用作檔案修改,列印使用較少

sed -r 'p'

file

#替換,和在vim中的操作一致,/符號可以更換

sed -r 's/root/alice/' filename

sed -r 's#root#alice#' filename

#查詢,依然查詢上面的字元,必須轉義,d表示刪除

sed -r '\#root#d' filename

#刪除,從am開頭的行刪除到20行

sed -r '/^am/,20d' filename

#刪除,從am開頭的行再刪除20行

sed -r '/^am/,20d' filename

#刪除奇數行

sed -r '1~2d' filename

#刪除偶數行

sed -r '0~2d' filename

命令功能s

替換,g行內全域性替換;i忽略大小寫

a在當前行新增一行或多行

c使用新文字替換當前行中的文字

d刪除行

i在當前行之前插入文字

l列出費列印字字元

p列印行

n讀入下一輸入航

q結束或退出sed

!對所選航以外的所有行應用命令

r從檔案中讀寫

w將行寫入檔案

y將字串轉換為另一字串(不支援正則)

h把模式空間的內容複製到緩衝區

選項功能

-e允許多項編輯

-f指定sed指令碼檔名

-n取消預設輸出

-iinpalce就地編輯

-r支援擴充套件元字元

#在{}中寫多個命令

sed -r '3' filename

#刪除最後一行

sed -r '$d' filename

#&符號表示匹配到的內容,一到五行前面加#

sed -ri '1,5s/.*/#&/' filename

#在第二個字元前加#

sed -ri 's/(.)(.)(.*)/\1#\2\3/' filename

#讀到某個位置後在讀取其他檔案

#讀到l在讀取其他檔案

sed -r '/l/r filename2' filename1

#寫入檔案

sed -r '3,$w newfile' filename1

#追加,第二行追加hello

sed -r '2a\hello' filename1

#替換,第二行替換成hello

sed -r '2chello' filename1

#插入,第二行插入kkkk

sed -r '2ikkkk' filename1

#找到下一行,進行操作

sed -r '/hello/' filename

#刪除注釋行,一般注釋以空格或\t(tab)開頭,後面接#

sed -ri '/^[ \t]*#/d' filename

#刪除配置檔案中//注釋的行

sed -ri '\#^[ \t]*//#d' filename

#刪除空行

sed -ri '/^[ \t]*$/d' filename

shell指令碼 sed流編輯器

sed n pattern command file n 顯示pattern查詢出的匹配行 不加 n會顯示原來的行與匹配的行 e 直接在命令列進行sed編輯 sed n e aaaaa p e aaaa p file p是列印的意思 f 有時上文中紅色的長度過長 可以把上文紅色放在檔案file1中 ...

sed流編輯器

sed預設不編輯原始檔,僅對模式空間中的資料做處理 而後,處理結束後,將模式空間中的內容列印至螢幕。sed options addresscommand file.用行,和命令一起來操作文字 options n 靜默顯示,不再顯示模式空間中的內容 i 直接修改原檔案 e 指令碼 e指令碼 可以同時執...

sed 流編輯器

sed 模式空間 預設不編輯原檔案,僅對模式空間中的資料做處理 而後,處理結束後,將模式空間列印至螢幕 sed options addresscommand file n 靜默模式,不再預設顯示模式空間中的內容 i 直接修改原檔案 e script e script 可以同時執行多個指令碼 f pa...