sed高階指令

2022-09-14 21:45:17 字數 2622 閱讀 3965

n命令簡單來說就是提前讀取下一行,覆蓋模型空間前一行,然後執行後續命令。然後再讀取新行,對新讀取的內容重頭執行sed

//從test檔案中取出偶數行

[root@localhost ~]# cat test

this is 1

this is 2

this is 3

this is 4

this is 5

[root@localhost ~]# sed –n 『n;p』 test

this is 2

this is 4

n命令簡單來說就是追加下一行到模式空間,同時將兩行看做一行,但是兩行之間依然含有\n換行符,然後執行後續命令。然後再讀取新行,對新讀取的內容重頭執行sed。此時,新讀取的行會覆蓋之前的行(之前的兩行已經合併為一行)

//從test檔案中讀取奇數行

[root@localhost ~]# cat test

this is 1

this is 2

this is 3

this is 4

this is 5

[root@localhost ~]# sed –n 'n;p' test //因為讀取第5行時,執行n,發現沒有第6行,不滿足,就退出,放棄p命令

this is 1

this is 3

[root@localhost ~]# sed –n '$!n;p' test

this is 1

this is 3

this is 5

讀取1,$!條件滿足(不是尾行),執行n命令,得出1\n2,執行p,列印得1,讀取3,$!條件滿足(不是尾行),執行n命令,得出3\n4,執行p,列印得3,讀取5,$!條件不滿足,跳過n,執行p,列印得5

d命令是刪除當前模式空間內容(不再傳至標準輸出),並放棄之後的命令,並對新讀取的內容,重頭執行sed

[root@localhostl ~]# cat test

this is 1

this is 2

this is 3

this is 4

this is 5

[root@localhostl ~]# sed 'n;d' test

this is 1

this is 3

this is 5

d命令是刪除當前模式空間開端至\n的內容(不在傳至標準輸出),放棄之後的命令,但是對剩餘模式空間重新執行sed

[root@localhostl ~]# cat test

this is 1

this is 2

this is 3

this is 4

this is 5

[root@localhostl ~]#sed 'n;d' aaa

this is 5

同 d 和 d 之間的區別一樣,p(大寫)命令和單行列印命令 p(小寫)不同,對於具有多行資料的緩衝區來說,它只會列印緩衝區中的第一行,也就是首個換行符之前的所有內容

[root@localhostl ~]# cat test

this is 1

this is 2

this is 3

this is 4

this is 5

[root@localhostl ~]# sed -n 'n;p' test

this is 1

this is 3

[root@localhostl ~]# sed -n 'n;p' test

this is 1

this is 2

this is 3

this is 4

命令功能h

是將當前模式空間中內容覆蓋至快取區

h是將當前模式空間中的內容追加至快取區

g命令是將當前快取區中內容覆蓋至模式空間

g是將當前快取區中的內容追加至模式空間

x是將當前快取區和模式空間內容互換

[root@localhostl ~]# cat test212

1122

111222

[root@localhostl ~]# sed '

> /1/

> /2/' test221

2211

222111

[root@localhostl ~]# cat test3

hello world

hello runtime

hehe

xixi

henhen

haha

end[root@localhostl ~]# sed '

> /^$/!

> /^$/' test3

hello world

hello runtime

hehe

xixi

henhen

haha

Sed指令速查

尊重原著,著明 本帖為優秀的帖子整合 1.sed簡介 2.定址 可以通過定址來定位你所希望編輯的行,該位址用數字構成,用逗號分隔的兩個行數表示以這兩行為起止的行的範圍 包括行數表示的那兩行 如1,3表示1,2,3行,美元符號 表示最後一行。範圍可以通過資料,正規表示式或者二者結合的方式確定 3.se...

sed操作指令

1 替換 1.txt文字中old為new,如下 sed s old new g 1.txt 2 列印 1.txt文字第一行至第三行,如下 sed n 1,3p 1.txt 3 列印 1.txt文字中第一行與最後一行,如下 sed n 1p p 1.txt 4 刪除 1.txt第一行至第三行 刪除匹配...

sed高階用法

echo mmj evan df sed s 2 g 表示式含義s 表示替換命令 表示第乙個引號前的內容 表示兩引號之間的內容 表示引號後的內容 2表示第二對括號裡面的內容 輸出結果 evan同理 echo mmj evan df sed s 1 g 輸出結果為 mmj批量修改 echo excut...