国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

sed模式空間和暫存空間的區別

2019-10-26 18:35:26
字體:
來源:轉載
供稿:網友

sed編輯器逐行處理文件,并將輸出結果打印到屏幕上。sed命令將當前處理的行讀入模式空間(pattern space)進行處理,sed在該行上執行完所有命令后就將處理好的行打印到屏幕上(除非之前的命令刪除了該行),sed處理完一行就將其從模式空間中刪除,然后將下一行讀入模式空間,進行處理、顯示。處理完文件的最后一行,sed便結束運行。sed在臨時緩沖區(模式空間)對文件進行處理,所以不會修改原文件,除非顯示指明-i選項。

與模式空間和暫存空間(hold space)相關的命令:

n 輸出模式空間行,讀取下一行替換當前模式空間的行,執行下一條處理命令而非第一條命令。
N 讀入下一行,追加到模式空間行后面,此時模式空間有兩行。
h 把模式空間里的行拷貝到暫存空間。
H 把模式空間里的行追加到暫存空間。
g 用暫存空間的內容替換模式空間的行。
G 把暫存空間的內容追加到模式空間的行后。
x 將暫存空間的內容于模式空間里的當前行互換。
! 對所選行以外的所有行應用命令。

注意:暫存空間里默認存儲一個空行。

下面是一些例子:

cat datafile
111111111111 aaa
222222222222 bbb
333333333333 ccc
444444444444 ddd
555555555555 eee
666666666666 fff

在每行后面加一空行:

sed 'G' datafile
111111111111 aaa

222222222222 bbb

333333333333 ccc

444444444444 ddd

555555555555 eee

666666666666 fff

aaa行被讀入模式空間,執行G,在此行后面追加一個空行,然后打印模式空間,其他行同理。

在匹配行后加一空行:

sed '/ccc/G' datafile
111111111111 aaa
222222222222 bbb
333333333333 ccc

444444444444 ddd
555555555555 eee
666666666666 fff

在匹配行前加入一個空行:

sed '/ccc/{x;p;x;}' datafile
111111111111 aaa
222222222222 bbb

333333333333 ccc
444444444444 ddd
555555555555 eee
666666666666 fff

命令執行前后暫存空間和模式空間的變化情況:

命令     暫存空間                                         模式空間
x           執行前:null 執行后:ccc/n              執行前:ccc/n 執行后:null
p          執行前:null 執行后:ccc/n              執行前:ccc/n 執行后:null 輸出一個空行
x          執行前:ccc/n 執行后:null              執行前:null 執行后:ccc/n 輸出ccc所在行

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 惠来县| 林口县| 海口市| 栾川县| 许昌县| 霍城县| 即墨市| 普格县| 娱乐| 德格县| 临夏县| 潞西市| 新营市| 凤山市| 奉新县| 哈尔滨市| 建湖县| 锡林浩特市| 赞皇县| 嘉祥县| 水城县| 陕西省| 怀仁县| 永仁县| 镇安县| 抚宁县| 贵定县| 皮山县| 德令哈市| 文水县| 元朗区| 深圳市| 黄冈市| 福泉市| 汪清县| 临朐县| 台江县| 黎平县| 阜城县| 广元市| 城固县|