每天乙個linux命令(62) sed命令

2021-08-14 04:45:39 字數 4245 閱讀 9133

sed命令列格式為

sed [常用選項] 『常用命令』 輸入文字

• 常用選項:

-n∶使用安靜(silent)模式。在一般 sed 的用法中,所有來自 stdin的資料一般都

會被列出到螢幕上。但如果加上 -n 引數後,則只有經過sed 特殊處理的那一行(或者動

作)才會被列出來。

-e∶直接在指令列模式上進行 sed 的動作編輯;

-f∶直接將 sed 的動作寫在乙個檔案內, -f filename 則可以執行 filename 內的

sed 動作;

-r∶sed 的動作支援的是延伸型正規表示法的語法。(預設是基礎正規表示法語法)

-i∶直接修改讀取的檔案內容,而不是由螢幕輸出。

• 常用命令:

a ∶新增, a 的後面可以接字串,而這些字串會在新的一行出現(目前的下一行)

~ c ∶取代, c 的後面可以接字串,這些字串可以取代 n1,n2 之間的行!

d ∶刪除,因為是刪除啊,所以 d 後面通常不接任何咚咚;

i ∶插入, i 的後面可以接字串,而這些字串會在新的一行出現(目前的上一行)

; p ∶列印,亦即將某個選擇的資料印出。通常 p 會與引數 sed -n 一起運作~

s ∶取代,可以直接進行取代的工作哩!通常這個 s 的動作可以搭配正規表示法

!例如 1,20s/xiaoming/xiaowang/g 就是啦!

sed 檢索檔案

• sed –n 』10 p』 data.csv 輸出第十行檔案內容

• sed –n 『99990,100000 p』 data.csv 輸出99990到100000檔案內容

• sed –n 『99990, $ p 』 data.csv 輸出99990到檔案末尾內容

• sed –n 『/xiaoming0/,/xiaoming10/ p』 data.csv 輸出包含xiaoming0到

xiaoming10之間內容

• sed –n 『/^xiaoming p/』 data.csv ^表示檔案開頭

• sed 『/xiaoming/!p』 data.csv 顯示不含有xiaoming的行

• sed -n 『/[^ xiaoming]/p』 data.csv 效果同上

• sed 『/^$/p』 data.csv 匹配檔案空行

• /^.*$/ 整行

sed刪除檔案內容

• sed '10 d' aa.txt

• sed '10,$ d' aa.txt

• sed '10~20 d' aa.txt

• sed '/123/ d' aa.txt

• sed '/123/,$ d' aa.txt

sed 替換檔案

• [root@forest sh]# more data.csv

• 100012 小明0 xiaoming0

1234567890

11111111111111110 杭州 0

0• 100013 小明1 xiaoming1 1234567891

11111111111111111 杭州 1

1• 100014 小明2 xiaoming2 1234567892

11111111111111112 杭州 2

2• 100015 小明3 xiaoming3 1234567893

11111111111111113 杭州 3

3• 100016 小明4 xiaoming4 1234567894

11111111111111114 杭州 4

4• 100017 小明5 xiaoming5 1234567895

11111111111111115 杭州 5

5• 100018 小明6 xiaoming6 1234567896

11111111111111116 杭州 6

6• 100019 小明7 xiaoming7 1234567897

11111111111111117 杭州 7

7• 100020 小明8 xiaoming8 1234567898

11111111111111118 杭州 8

8• 100021 小明9 xiaoming9 1234567899

11111111111111119 杭州 9

9• 100022 小明10 xiaoming10

12345678910

111111111111111110 杭州 10

10• [root@forest sh]# sed -i's/\t/,/g' data.csv

• [root@forest sh]# more data.csv

• 100012,小明0,xiaoming0,1234567890,11111111111111110,杭州,0,0

• 100013,小明1,xiaoming1,1234567891,11111111111111111,杭州,1,1

• 100014,小明2,xiaoming2,1234567892,11111111111111112,杭州,2,2

• 100015,小明3,xiaoming3,1234567893,11111111111111113,杭州,3,3

• 100016,小明4,xiaoming4,1234567894,11111111111111114,杭州,4,4

• 100017,小明5,xiaoming5,1234567895,11111111111111115,杭州,5,5

• 100018,小明6,xiaoming6,1234567896,11111111111111116,杭州,6,6

• 100019,小明7,xiaoming7,1234567897,11111111111111117,杭州,7,7

• 100020,小明8,xiaoming8,1234567898,11111111111111118,杭州,8,8

• 100021,小明9,xiaoming9,1234567899,11111111111111119,杭州,9,9

• 100022,小明10,xiaoming10,12345678910,111111111111111110,杭州,10,10

sed 檔案新增內容

• sed '$a insert one line data' data.csv

• 200003,小明99991,xiaoming99991,12345678999991,111111111111111199991,杭州,255,65535

• 200004,小明99992,xiaoming99992,12345678999992,111111111111111199992,杭州,255,65535

• 200005,小明99993,xiaoming99993,12345678999993,111111111111111199993,杭州,255,65535

• 200006,小明99994,xiaoming99994,12345678999994,111111111111111199994,杭州,255,65535

• 200007,小明99995,xiaoming99995,12345678999995,111111111111111199995,杭州,255,65535

• 200008,小明99996,xiaoming99996,12345678999996,111111111111111199996,杭州,255,65535

• 200009,小明99997,xiaoming99997,12345678999997,111111111111111199997,杭州,255,65535

• 200010,小明99998,xiaoming99998,12345678999998,111111111111111199998,杭州,255,65535

• 200011,小明99999,xiaoming99999,12345678999999,111111111111111199999,杭州,255,65535

• insert one line data

• 相當於 echo 「insert one line data」 >> data.csv 檔案尾部追加內容

每天乙個Linux命令

將我遇到的linux指令總結一下,不斷增加 1 sz和rz 一般來說,linux 伺服器大多是通過 ssh客戶端來進行遠端的登陸和管理的,使用 ssh登陸 linux ssh有關的兩個命令可以提供很方便的操作 sz 將選定的檔案傳送 send 到本地機器 rz 執行該命令會彈出乙個檔案選擇視窗,從本...

每天乙個linux命令

linux cmp命令 linux cmp命令用於比較兩個檔案是否有差異。當相互比較的兩個檔案完全一樣時,則該指令不會顯示任何資訊。若發現有所差異,缺省會標示出第乙個不同之處的字元和列數編號。若不指定任何檔名稱或是所給予的檔名為 則cmp指令會從標準輸入裝置讀取資料。語法cmp clsv i 字元數...

每天乙個 Linux 命令

head 與 tail 就像它的名字一樣的淺顯易懂,它是用來顯示開頭或結尾某個數量的文字區塊,head 用來顯示檔案的開頭至標準輸出中,而 tail 想當然爾就是看檔案的結尾。1 命令格式 head 引數 檔案 2 命令功能 head 用來顯示檔案的開頭至標準輸出中,預設head命令列印其相應檔案的...