歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> sed命令用法詳解

sed命令用法詳解

日期:2017/2/28 15:43:23   编辑:Linux教程

sed簡介
stream editor 流式編輯器(行編輯器),一次讀取一行,處理一行;所有操作是在模式空間中進行,根據需要再做處理

基本格式
sed [OPTION]... {模式or /正則表達式/}[command] [input-file]...
即理解為sed 通過一些option(選項) 對特定文件(input-file)通過指定的模式匹配後的結果,再用sed的子命令command處理,得到最終的結果

說明:
1、若沒有特別說明,則以下所有的例子都不對源文件進行操作
2、sed後面的內容使用單引號 或 雙引號(當有變量需要引用時)
3、正則表達式的使用,默認的為基本的正則表達式

options:
-r 使用擴展正則表達式
-i 直接操作源文件
-e 同時處理多個操作
-n 表示在模式空間中的文本不顯示,只顯示處理之後的內容


command(所有以下的命令都可以取反即使用"!")
d 刪除指定的行
例如:刪除/etc/fstab的前兩行 eg:sed '1,2d' /etc/fstab
刪掉除了前兩行的內容 eg:sed '1,2!d' /etc/fstab

p:顯示指定的內容(但會顯示兩邊符合條件的內容,因為模式空間中的文本在處理 之前,每一次都會先顯示)
例如:顯示/etc/fstab中的前兩行內容 eg: sed '1,2p' /etc/fstab 前兩行會顯示兩次
eg: sed -n '1,2p' /etc/fstab 只顯示了前兩行

a\:在模式匹配到的行後面添加新內容
例如:對/etc/fstab中以#號開頭的行後面加一行為this is a new line
eg:sed '/#/a\this is a new line' /etc/fstab

文件test的內容如下:
He love his love.
She like her like.
Dove love her like.


i\:在模式匹配到的行前面添加新內容
例如:對文件/etc/fstab以#號開頭的行前面加一行為this is a new line
eg:sed '/#/r\this is a new line' /etc/fstab
\n可以實現多行添加 例如:上個例子中添加兩行“line1" "line2"
eg:sed '/#/r\line1\nline2' /etc/fstab

r file:把file中的內容添加到指定文件中的指定位置
例如:把/etc/fstab中的內容添加到/etc/inittab中的第二行後面
eg: sed '2r /etc/fstab' /etc/inittab

w file:把指定文件的指定內容保存到 file中
例如:把/etc/fstab中的以小寫字母開頭的行保存到/tmp/fstab.out中
eg: sed '/[a-z]/w /tmp/fstab.out' /etc/fstab

n:依次讀取下一行 ,第一條被覆蓋; eg:sed -n '1n;p' /etc/test 結果如下:
She like her like.
Dove love her like.
N:依次下一行 追加;在讀取一行之後,再讀一行 以追加的方式 在模式空間中是一行,顯示出兩行,去掉中間的換行符,兩行合並為一行
eg:sed -n '1N;p' /etc/fstab
結果如下:
He love his love.
She like her like.
Dove love her like.

eg: sed '1N;s/\n/ /' test 把換行符替換成空白,即去掉換行符
結果如下:
He love his love. She like her like.
Dove love her like.

Copyright © Linux教程網 All Rights Reserved