老段帶我學sed的筆記

課程地址:http://edu.51cto.com/course/course_id-1108.html
html


sed  '範圍(條件)命令' 文件正則表達式

命令中引用shell的變量須要加上引號,單引號括起來變量 '$xxx',或者雙引號括起來整個條件範圍
條件命令中的斜槓分隔符能夠換成其餘任意字符,用在條件範圍中存在斜槓容易混淆的時候shell


參數bash

-n 關閉默認輸出,結合標籤p,只輸出符合條件範圍的行 sed 's/tom/TOM/p'
-i 將修改結果回寫到文件。-i.bak表示將源文件以.bak備份ide


d    刪除
範圍條件3d

使用數字表示行號htm

sed '3d' test       #刪除第3行

用逗號,表示行號範圍blog

sed '5,10d' test  #刪除第5-10行

用波浪號~表示跨步get

sed '1~2d' test   #從第1行起,每2行刪除1行。即,刪除奇數行

用$表示最後一行it

sed '$d' test   #刪除最後一行

正則表達式(用//括起來,可替換使用其餘字符)

sed '/^student/d' test       #刪除student開頭的行
sed '/\bstudent\b/d' test    #刪除包含student單詞的行


s 替換 's/old/new/標籤'

old部分能夠使用正則表達式,new部分不能夠使用正則表達式

sed 's/tom/TOM/2'     #將每行第2個出現的tom替換爲大寫TOM

標籤g 對一行中全部符合條件的字符都執行操做
標籤p 輸出符合條件範圍的行,未關閉默認輸出的狀況下,符合條件的行將輸出兩次


用分號;使sed一次性執行多個操做

sed  's/tom/TOM/g; s/aaa/AAA/g'  test
#將test中tom替換爲TOM,接着在此基礎上,將aaa替換爲AAA

如下是另外一個例子,先將輸出結果的連續逗號替換成單個,而後將逗號替換成製表符

wKioL1MlLZfCILGQAADynh6RZ98354.jpg

new部分能夠使用的參數:
& 表示old的值
\U 把\U後面的全部字符更換爲大寫

sed  's/\[.*\]/\U&/' test #將test中[]內字符改成大寫

\u 把\u後面的第一個字符更換爲大寫
\L 把\L後面的全部字符更換爲小寫
\l 把\u後面的第一個字符更換爲小寫
\E 終止\U\L的轉換
\1 \2 引用old部分的分組內容,old部分的分組以()分隔,()須要\轉義(sed -r 能夠不用轉義\引用括號)。數字表示第幾個分組

sed -n 's/#\(Server\)\(Name\)/\2/p' test
#輸出結果將#ServerName替換爲Name

i 在條件範圍行的上一行插入 sed  '1atest' file #在file第1行後面追加test行
a 在條件範圍行的下一行插入
c 將知足某個條件的行替換(整行替換)

sed '/ONBOOT/c ONBOOT=yes/' ifcfg-eth0

y 替換 y/abc/XYZ/

n 在模式空間讀取範圍條件行的下一行
N 在模式空間將讀取範圍條件行追加到下一行,兩行合併爲一行,但兩行之間仍然有\n換行符

-------------------------------------
rhce rhce rh
ce rhce rhce

sed 'N:s/rhce/RHCA/g' test
-------------------------------------

保持空間
x 保持空間和模式空間內容互換
h 把模式空間的內容拷貝到保持空間(覆蓋)
H 把模式空間的內容拷貝到保持空間(追加)
g 把保持空間的內容寫入到模式空間(覆蓋)
G 把保持空間的內容寫入到模式空間(追加)
-------------------------------------
tom
jingli
bob
zongjian
mary
jingli
jerry
zongjian

sed -n -e '/jingli/!h' -e '/jingli/{x;p}' test
顯示jingli的上一行內容
sed -n -e '/jingli/!h' -e '/jingli/{H;x;s/\n/:/;p}' test
將jingli追加到上一行末尾,以冒號:分隔
sed -n  'h;n;G;p' test
奇數行和偶數行互換
-------------------------------------

sed 標籤 功能,實現循環。格式以下sed ':標籤 範圍1 命令1; /模式/b'sed ':label s/rhce/RHCA/; /rhce/b label' test替換rhce爲RHCA,以後檢測是否存在rhce,知足條件執行標籤跳轉。

相關文章
相關標籤/搜索