原文 http://blog.chinaunix.net/uid-24426415-id-77244.html
-------------------------------------------------------------------------------
初級入門
sed工具是一種非交互式的流編輯器。默認情況下只會影響輸出,不會改變輸入。sed處理文檔時是以行為單位的。功能有:刪除、查找替換、添加、插入、從其他文件讀取。
其實這些功能看起來都可以用vim等編輯器來實現。那么,為什么要有sed呢?
主要應用場景
- 太過龐大的文本
- 有規律的文本修改
sed的命令格式
sed [option] command [file ...]
- 1
- 1
刪除
#刪除第一行 sed '1d' file
- 1
- 2
- 1
- 2
注意,這只影響到輸出流。如果想保存的話
sed -i '1d' filename
- 1
- 1
或者
#輸出到新文件 sed '1d'>newfilename
- 1
- 2
- 1
- 2
其中1d命令中,我們把1稱為地址,這里指代的是第一行。
刪除第一行到最后一行
sed '1,$d' filename
- 1
- 1
刪除包含了某個pattern的行
sed '/pattern/d' filename #例如 sed '/^$/d' filename
- 1
- 2
- 3
- 1
- 2
- 3
查找替換
#普通替換 將每行的第一個line替換成LINE sed 's/line/LINE/' filename
- 1
- 2
- 1
- 2
sed ‘s/line/LINE/[number]
表示對這一行來說至多替換number個line,如果number為g,則全部替換
字符轉換
現在還沒有見過重要的用法
- 1
- 1
插入文本
#在第二行前插入一行 sed '2 i insert_context' filename #在第二行之后插入一行 sed '2 a insert_context' filename #在匹配的行之前插入一行 sed '/pattern/i\new_word' filename
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
打印
#只打印出第一行 ,不加n的話會默認輸出每一行 sed -n '1p' filename #只打印出被修改的一行 sed -n 's/the/THE/p' filename