sed工具

文本處理sed

一:簡介

? Stream EDitor, 行編輯器
首先對于一個文本文件來說朴上,它是由至上而下的一行或N行組成拷沸。
1、當用sed命令對文本進行處理的時候恨胚,sed先讀取對象的文本文件的第一行到模式空間中脚翘。
2灼卢、當有內容進入“模式空間”時,sed的編輯命令對模式空間中的內容進行編輯操作(修改来农,替換鞋真,刪除,追加沃于,顯示等等)
3涩咖、模式空間中的內容編輯處理完成之后,sed把此內容通過標準輸出(默認為顯示器)打印出來繁莹,并刪除模式空間中的內容檩互。
4、第一行處理結束咨演。從新讀取第二行的內容進行處理闸昨,直到最后一行。

二:語法

? 用法:

sed [option]... 'script' inputfile...

? 常用選項:

-n:不輸出模式空間內容到屏幕,即不自動打印
-e:  多點編輯
   eg: sed -e 's/dog/cat/' -e 's/hi/lo/' pets
-f:/ PATH/SCRIPT_FILE :  從指定文件中讀取編輯腳本
-r:  支持使用擴展正則表達式
-i.bak:  備份文件并原處編輯(.bak是后綴名)
  eg : sed -i.bak '1-2d' f1
     將f1文件備份生成f1.bak文件饵较,再進行修改

? script: ’ 地址(要處理的行)+命令’

地址定界:
(1)  不給地址:對全文進行處理
(2)  單地址:
      #:  指定的行
/pattern/ :被此處模式所能夠匹配到的每一行
        eg: sed -n /^r/ /etc/passwd
(3)  地址范圍:
      #,#
      #,+#
        eg: sed -n '3,+6p' /etc/passwd(取第三行拍嵌,到往下的六行)
    /pat1/,/pat2/
        eg: sed -n '/^h/,/^s/p' /etc/passwd
    #,/pat1/
        eg: sed -n '2p,/^s/' /etc/passwd
(4) ~ :步進

  1~2  奇數行(從第一行開始,每次加2)
  2~2  偶數行(從第二行開始循诉,每次加2)
      eg: sed 100|sed '2~2p'

編輯命令:

d:  刪除模式空間匹配的行
    eg:sed '90d' f1 刪除第90行
p:  顯示模式空間中的內容
    eg:sed '90p' f1 打印第90行
a [\]text :在指定行 后面 追加文本
   支持 使用\n (表示換行) 實現多行追加
     eg:sed '90anewline' f1
        sed '90a\new\nnewline\nnewline' f1
i [\]text :在行前面 插入文本
c [\]text :替換行為單行或多行文本
    eg: sed '10,90c\   new line1\nnew line2\nnewline3' f1
        把十到九十行都刪了用后面的內容代替
w /path/somefile:  保存模式匹配的行至指定文件
    eg:sed '10,90w /root/f2' f1
       把f2的10到90行保存到f1
r /path/somefile :讀取指定文件的文本至模式空間中匹配到的行后
    eg: sed '10r /etc/issue' f1
       將/etc/issue讀入到f1的第10行后
=:  為模式空間中的行打印行號
    eg: sed '=' /etc/passwd


!:  模式空間中匹配行取反處理
    eg:sed -n '1~2!p' 取出偶數行

s/// :查找替換, 支持使用其它分隔符横辆,s@@@

? 替換標記:

  g:  行內全局替換
  p:  顯示替換成功的行
  w  /PATH/TO/SOMEFILE :將替換成功的行
     eg:sed '2~2s/root/ROOT/g' f1 將偶數行的root替換成ROOT
高級編輯命令:
  h:  把模式空間中的內容覆蓋至保持空間中
  H :把模式空間中的內容追加至保持空間中
  g:  從保持空間取出數據覆蓋至模式空間
  G :從保持空間取出內容追加至模式空間
  x:  把模式空間中的內容與保持空間中的內容進行互換
  n:  讀取匹配到的行的下一行 覆蓋 至模式空間
  N :讀取匹配到的行的下一行 追加 至模式空間
  d:  刪除模式空間中的行
  D :刪除 當前模式空間開端至\n (換行)的內容( 不再傳 至標準輸出),放棄之后的命令茄猫,
      但是對剩余模式空間重新執(zhí)行sed

三:sed練習

1 狈蚤、刪除centos7 系統(tǒng)/etc/grub2.cfg 文件中所有以空白開頭的行行首的空白字符

  sed 's/^[[:space:]]\+//' /etc/grub2.cfg

2 、刪除/etc/fstab 文件中所有以# 開頭划纽,后面至少跟一個空白字符的行的行首的# 和空白字符

  sed 's/^#[[:space:]]\+//' /etc/fstab

3 脆侮、在centos6 系統(tǒng)/root/install.log 每一行行首增加#號

  sed 's/^/#/g' /root/install.log

4 、在/etc/fstab 文件中不以# 開頭的行的行首增加#號

   sed 's/^[^#]/#/g' /etc/fstab

5 阿浓、處理/etc/fstab 路徑, 使用sed 命令取出其目錄名和基名

  取目錄名echo "/etc/sysconfig/network"|sed -r 's@(^/.*/)([^/]+/?)@\1@'
  取基名:echo "/etc/sysconfig/network"|sed -r 's@(^/.*/)([^/]+/?)@\2@'

6 、利用sed 取出ifconfig 命令中本機的IPv4 地址

  ifconfig eth0|sed -n '2p' |sed -e 's/^.*r://' -e 's/ .*//'  

7 蹋绽、統(tǒng)計centos 安裝光盤中Package 目錄下的所有rpm 文件的以. 分隔倒數第二個字段的重復次數

  法一:  ll /misc/cd/Packages/ |egrep '*.rpm' | sed -r 's@(^.*\.) 
              ( [^.]+ )\.rpm$@\2@' | sort | uniq -c

法二:  ls /misc/cd/Packages/ |egrep '*.rpm$'|sed -e 's@.rpm@@' -e 's@.*\.@@'
       | sort |uniq -c

8 芭毙、統(tǒng)計/etc/init.d/functions 文件中每個單詞的出現次數,并排序(用grep 和sed 兩種方法分別實現)

sed -nre 's@[^[:alpha:]]+@\n@gp' /etc/init.d/functions |sort|uniq -c|sort -n
grep -oE '\<[[:alpha:]_]+[[:alnum:]]+\>' /etc/init.d/functions 

9 论皆、將文本文件的n 和n+1 行合并為一行雕蔽,n為奇數行

sed -n 'N;s/\n//p' /etc/passwd
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末叽掘,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子侈百,更是在濱河造成了極大的恐慌,老刑警劉巖翰铡,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钝域,死亡現場離奇詭異,居然都是意外死亡锭魔,警方通過查閱死者的電腦和手機例证,發(fā)現死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來迷捧,“玉大人织咧,你說我怎么就攤上這事∧铮” “怎么了笙蒙?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長庆锦。 經常有香客問我捅位,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任绿渣,我火速辦了婚禮朝群,結果婚禮上,老公的妹妹穿的比我還像新娘中符。我一直安慰自己姜胖,他們只是感情好,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布淀散。 她就那樣靜靜地躺著右莱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪档插。 梳的紋絲不亂的頭發(fā)上慢蜓,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機與錄音郭膛,去河邊找鬼晨抡。 笑死,一個胖子當著我的面吹牛则剃,可吹牛的內容都是我干的耘柱。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼棍现,長吁一口氣:“原來是場噩夢啊……” “哼调煎!你這毒婦竟也來了?” 一聲冷哼從身側響起己肮,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤士袄,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后谎僻,有當地人在樹林里發(fā)現了一具尸體娄柳,經...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年艘绍,在試婚紗的時候發(fā)現自己被綠了西土。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡鞍盗,死狀恐怖需了,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情般甲,我是刑警寧澤肋乍,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站敷存,受9級特大地震影響墓造,放射性物質發(fā)生泄漏堪伍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一觅闽、第九天 我趴在偏房一處隱蔽的房頂上張望帝雇。 院中可真熱鬧,春花似錦蛉拙、人聲如沸尸闸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吮廉。三九已至,卻和暖如春畸肆,著一層夾襖步出監(jiān)牢的瞬間宦芦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工轴脐, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留调卑,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓大咱,卻偏偏與公主長得像恬涧,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子徽级,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內容