shell語言 sed 之 入門

2021-07-22 10:45:16 字數 3378 閱讀 6563

sed編輯器逐行處理檔案(或輸入)

(1).基本格式

sed [-nefri] [動作] [input_file]

選項:

-n :表示安靜模式操作,也就是只將被更改的行輸出,沒更改的行不輸出,預設sed

是輸出所有的行

-e scrip:指定sed的執行命令可以指定多個這個選項

-f script_file:指定執行乙個包含sed命令的指令碼檔案

-r:支援擴充套件的正規表示式(預設只支援基礎的正規表示式)

-i:直接操作原檔案,預設是不更改原檔案的,而只是將更改結果直接輸出到

標準輸出上,可以使用這個選項來讓sed直接更改原檔案

動作:

基本格式: [n1[,n2]] function

說明:n1和n2用來指定修改的範圍(從第n1行到第 n2行),他們不一定必須指定

若都沒指定則表示修改整個檔案,若沒有指定n2則表示修改的範圍為從n1

到檔案末尾.

注:n1,n2可以為數字,表示第n行(從1開始),當然也可以用』/pattern/』來指定

表示使用查詢來指定函式,即查詢到最先包含pattern的行為該指定的行數
function有以下值:

(1).插入

[1].i string:表示當前行前面插入一行,內容為string

[2].a string:表示當前行後面插入一行,內容為string

(2).刪除

d:表示將指定的行刪除
(3).替換

[1].c string:指定整行替換為string

[2].s/find_string/replace/:表示用replace替換find_string

(4).列印

p:表示將選擇的行列印出來
下面是一些例項:

假設檔案 example.txt的內容如下

#######################example.txt內容開始

line1 hello world1

line2 hello world2

line3 hello world3

#######################example.txt內容結束

(1).在第1行後面插入一行,內容為insert after line1

sed -i -e 『1a insert after line1』 example.txt

結果example.txt內容為:

line1 hello world1

insert after line1

line2 hello world2

line3 hello world3

(2).在第一行前面插入一行,內容為insert before line1

sed -i -e 『1i insert before line1』 example.txt

結果:

insert before line1

line1 hello world1

insert after line1

line2 hello world2

line3 hello world3

(3).刪除第2到第4行

sed -i -e 『2,4d』 example.txt

結果:

insert before line1

line3 hello world3

(4).列印第2行

sed -e 『2p』 example.txt

(5).將第2行替換為line2 hello world

sed -i -e 『2c line2 hello world』 example.txt

結果:

insert before line1

line2 hello world

(6).替換第二行的hello world為world hello

sed -i -e 『2s/hello world/world hello/』 example.txt

結果:

insert before line1

line2 world hello

好了sed簡單入門就講到這裡了,由於sed命令實在太好用了,也太強大了,因此要

的入門教材而已

符號 原子性 含義

\0 是 匹配空字元(ascii nul)。

\nnn 是 匹配給出八進位制的字元,最大值為\377。

\n 是 匹配前面第n個捕獲字串(十進位制)。

\a 是 匹配警鐘字元(bel)。

\a 否 如果在字串的開頭為真

\b 是 匹配退各字元(bs)。

\b 否 在字邊界為真

\b 否 不在字邊界時為真

\cx 是 匹配控制字元 control-x(\cz,\c[,等)。

\c 是 匹配乙個位元組(c字元),甚至在utf8中也如此(危險)

\d 是 匹配任何數字字元

\d 是 匹配任何非數字字元

\e 是 匹配逃逸字元(ascii esc,不是反斜槓)。

\e —— 結束大小寫(\l,\u)或者掩碼(\q)轉換

\f 是 匹配進頁字元(ff)。

\g 否 如果在前乙個m//g的匹配結尾位置時為真

\l —— 只把下乙個字元變成小寫

\l —— 把\e以前的字母都變成小寫

\n 是 匹配換行符字元(通常是nl,但是在mac上是cr)。

\n 是 匹配命名字元(\n)。

\p 是 匹配任何有命名屬性的字元

\p 是 匹配任何沒有命名屬性的字元

\q —— 引起(消元)直到\e前面的字元

\r 是 匹配返回字元(通常是cr,但是在mac上是nl)。

\s 是 匹配任何空白字元。

\s 是 匹配任何非空白字元。

\t 是 匹配水平製表符(ht)。

\u —— 只把下乙個字元變成標題首字元

\u —— 大寫(不是標題首字元)\e 以前的字元。

\w 是 匹配任何「字」字元(字母數字加」_」 )。

\w 是 匹配任何「非字」字元。

\x 是 匹配在十六進製制中給出的字元。

\x 是 匹配unicode裡的」組合字串行「字串。

\z 否 只有在字串結尾時為真

\z 否 在字串結尾或者在可選的換行符之前為真。

其他示例:

首行字元小寫:

sed -i 『1s/.*/\l&/g』 tbl_user_profile_status.csv

sed命令例項 shell指令碼入門

什麼是 sed?sed是乙個很好的檔案處理工具,本身是乙個管道命令,主要以行為單位進行處理,可以將資料行進行替換 刪除 新增 選取等特定工作。sed 選項 命令 n,使用安靜 silent 模式。在一般 sed 的用法中,所有來自 stdin 的資料一般都會被列出到終端上。但如果加上 n 引數後,則...

shell指令碼之sed開發

tmp file txt my qq num is 49000448.not4900000448.my god i am not oldbey,but clsn cheng my name is cheng.not oldman.my god i am not oldbey,but clsn i l...

Shell指令碼學習之sed詳解

linux 1 目錄 sed編輯器逐行處理檔案 或輸入 並將結果傳送到螢幕。具體過程如下 首先sed把當前正在處理的行儲存在乙個臨時快取區中 也稱為模式空間 然後處理臨時緩衝區中的行,完成後把該行傳送到螢幕上。sed每處理完一行就將其從臨時緩衝區刪除,然後將下一行讀入,進行處理和顯示。處理完輸入檔案...