sed全稱是stream editor,是乙個用於文字過濾和替換的流編輯器,它是乙個管道命令,資料來源來自stdin,它的最小處理單位是行(與awk區分)。
語法如下:
sed [-nfri] [動作]
-n:使用安靜模式。只有經過sed處理的行才會輸出到螢幕上
-f:直接將sed的動作寫在乙個檔案內,-f filename 則可以執行filename內的sed動作
-r:切換為支援擴充套件正規表示式
-i:直接修改讀取的檔案內容,而不是由螢幕輸出
[動作]
[n1[,n2]]function
n1 n2表示應用sed的行數,可以不存在該引數
function引數說明:
a:新增,a的後面可以接字串,這些字串會出現在下一行(新行)
c:替換,c的後面可以接字串,這些字串將替換n1到n2之間的行
d:刪除,刪除n1到n2之前的行
i:插入,i的後面可以接字串,這些字串會出現在上一行(新行)
p:列印,也就是將某個選擇的資料列印出來。通常p會與sed -n一起使用
s:替換,如將1到20行之間的old替換為new:1,20s/old/new/g
測試文字的內容如下所示,建立乙個新檔案regular_express.txt,並將下面的內容拷貝到檔案中即可開始試驗:
not use feet only.
this dress doesn't fit me.
however, this dress is
about $ 3183 dollars.^m
gnu is free air not free beer.^m
her hair is very beauty.^m
i can't finish the test.^m
oh! the soup taste good.^m
motorcycle is cheap than car.
this window is clear.
the symbol '*' is represented as start.
oh! my god!
the gd software is a library for drafting programs.^m
you are the best is mean you are the no. 1.
the same with
"glad".
i like dog.
google is
the best tools for search keyword.
goooooogle yes!
go! go! let's go.
# i am vbird
使用sed刪除檔案的2,5行:
[nigel]$ nl regular_express.txt | sed '2,5d'
1"open source"
is a good mechanism to develop programs.
6 gnu is free air not free beer.^m
7 her hair is very beauty.^m
8 i can't finish the test.^m
如果要刪除第3行到最後一行,則可以這樣:
[nigel@/vbird_linux]$ nl regular_express.txt | sed '3,$d'
1"open source"
is a good mechanism to develop programs.
只刪除第2行:
[nigel@/vbird_linux]$ nl regular_express.txt | sed '2d'1"open source"
is a good mechanism to develop programs.
3 football game is
not use feet only.
[nigel@/vbird_linux]$ nl regular_express.txt | sed '2a hello world'
1"open source"
is a good mechanism to develop programs.
hello world
3 football game is
not use feet only.
[nigel@/vbird_linux]$ nl regular_express.txt | sed '2i hello world'
1"open source"
is a good mechanism to develop programs.
hello world
3 football game is
not use feet only.
多行的插入比較特殊:
[nigel@/vbird_linux]$ nl regular_express.txt | sed '2i hello \
> world!'
1"open source"
is a good mechanism to develop programs.
hello
world!
3 football game is
not use feet only.
多行插入必須要加上\。
動作c可以將n1-n2行替換為指定的字串:
[nigel/vbird_linux]$ nl regular_express.txt | sed '2,5c hello world'
1"open source"
is a good mechanism to develop programs.
hello world
6 gnu is free air not free beer.^m
注意,是將n1-n2替換為一行,總行數會減少。
我們以前要列出11-20行需要這麼做「head -n 20 | tail -n 10」,這樣處理很麻煩。有了sed後,就可以簡單直接取出那幾行:
[nigel@ /vbird_linux]$ nl regular_express.txt | sed -n '11,15p'
11 this window
is clear.
12 the symbol '*'
is represented as start.
13 oh! my god!
14 the gd software is a library for drafting programs.^m
15 you are the best is mean you are the no. 1.
注意要與-n引數一起使用。
用法
sed 's/舊字串/新字串/g'
使用示例:
1"open source"
is a good mechanism to develop programs.
sed除了能從管道後去資料外,還能夠直接修改檔案!
[nigel@/vbird_linux]$ cat regular_express.txt
"open source"
is a good mechanism to develop programs.
football game is
not use feet only.
[nigel@/vbird_linux]$ sed -i '1,2d' regular_express.txt
[nigel@/vbird_linux]$ cat regular_express.txt
football game is
not use feet only.
不過該功能需要慎用,一旦修改過後就不能恢復。 awk基礎篇 Shell 文字處理利器
sed傾向於以行為單位進行處理,而awk更擅長將一行分為幾段進行處理。awk用法 awk 條件型別1 條件型別2 awk 條件型別1 條件型別2 filenameawk支援兩種資料 既可以通過管道獲取資料,也可以從檔案獲取資料。awk主要是處理每一行的字段內的資料,而預設的字段分割符為空格或tab。...
shell文字處理
最於檔案的操作以前都是用高階程式語言來操作的。今天恰好需要將乙個目錄中的檔案資訊儲存到sqlite3資料庫中 我用linux中的工具和shell來作為自己畢業設計做原型開發 下面記錄一下這裡用到的部分知識,以作備忘。用ls命令來說明 1.關於shell中的管道和重定向問題。這個知識基礎,這裡不再說了...
WML 文字處理
wml使用xml文件字符集,目前支援unicode 2.0,和hdml不同,wml的所有標籤,屬性和規定的可接收值必須小寫,card的名字和變數也是區分大小寫的。和hdml一樣,對於連續的空字元,只顯示乙個空格。標籤內屬性的值必須用 或者 括起來,屬性名,和值之間不能有空格。對於不成對出現的標籤,必...