8月9日 文本處理工具sed

1拣宰、用法

sed[option]... 'script' inputfile...
?常用選項(xiàng):
-n:不輸出模式空間內(nèi)容到屏幕,即不自動(dòng)打印
-e: 多點(diǎn)編輯
-f:/PATH/SCRIPT_FILE: 從指定文件中讀取編輯腳本
-r: 支持使用擴(kuò)展正則表達(dá)式
-i.bak: 備份文件并原處編輯
?script:
'地址命令'

2践美、地址定界

地址定界:
(1) 不給地址:對全文進(jìn)行處理
(2) 單地址:
#: 指定的行
/pattern/:被此處模式所能夠匹配到的每一行
(3) 地址范圍:
#,#
#,+#
/pat1/,/pat2/
#,/pat1/
(4) ~:步進(jìn)
1~2 奇數(shù)行
2~2 偶數(shù)行

3、編輯命令

d: 刪除模式空間匹配的行,并立即啟用下一輪循環(huán)
p:打印當(dāng)前模式空間內(nèi)容硝皂,追加到默認(rèn)輸出之后
a []text:在指定行后面追加文本,支持使用\n實(shí)現(xiàn)多行追加
i[]text:在行前面插入文本
c []text:替換行為單行或多行文本
w /path/somefile: 保存模式匹配的行至指定文件
r /path/somefile:讀取指定文件的文本至模式空間中匹配到的行后
=: 為匹配的模式空間中的行打印行號(hào)
!:模式空間中匹配行取反處理

4顷窒、查找替換

s///:查找替換,支持使用其它分隔符扮超,s@@@,s###
?替換標(biāo)記:
g: 行內(nèi)全局替換
p: 顯示替換成功的行
w /PATH/TO/SOMEFILE:將替換成功的行保存至文件中

5蹋肮、sed的高級編輯命令

?P:打印模式空間開端至\n內(nèi)容出刷,并追加到默認(rèn)輸出之前
?h: 把模式空間中的內(nèi)容覆蓋至保持空間中
?H:把模式空間中的內(nèi)容追加至保持空間中
?g: 從保持空間取出數(shù)據(jù)覆蓋至模式空間
?G:從保持空間取出內(nèi)容追加至模式空間
?x: 把模式空間中的內(nèi)容與保持空間中的內(nèi)容進(jìn)行互換
?n: 讀取匹配到的行的下一行覆蓋至模式空間
?N:讀取匹配到的行的下一行追加至模式空間
?d: 刪除模式空間中的行
?D:如果模式空間包含換行符,則刪除直到第一個(gè)換行符的模式空間中的文本坯辩,并不會(huì)讀取新的輸入行馁龟,而使用合成的模式空間重新啟動(dòng)循環(huán)。如果模式空間

6漆魔、舉例

[root@centos6 app]#seq 11 |sed -n '1~2p'   ---打印奇數(shù)行
1
3
5
7
9
11
[root@centos6 app]#seq 11 |sed -n '2~2p'
2
4
6
8
10
[root@centos6 app]#seq 5|sed 'axy'
1
xy
2
xy
3
xy
4
xy
5
xy
[root@centos6 app]#seq 5|sed 'a\ xy'   ---\加不加都可以坷檩,但加上有的時(shí)候可以前面多個(gè)空格
1
 xy
2
 xy
3
 xy
4
 xy
5
 xy
[root@centos6 app]#seq 5|sed '2,4axyz'
1
2
xyz
3
xyz
4
xyz
5
[root@centos6 app]#seq 5|sed '2axyz\n====\n++++'  ---\n可以追加多行內(nèi)容
1
2
xyz
====
++++
3
4
5
[root@centos6 ~]#sed '/^# Source/i alias yi="yum install"' .bashrc
# .bashrc

# User specific aliases and functions
alias grep='grep --color=auto'
alias egrep='egrep --color=auto'
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias p='poweroff'
alias cdpack='cd /misc/cd/Packages/'
alias cdnet='cd /etc/sysconfig/network-scripts/'
alias yi="yum install"  ---在指定行的前面插入內(nèi)容
# Source global definitions
if [ -f /etc/bashrc ]; then
    . /etc/bashrc
fi
[root@centos6 ~]#sed '/^SELINUX=enforcing/cSELINUX=permissive' /etc/selinux/config  ---替換

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=permissive
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 
[root@centos6 ~]#seq 5|sed '2,4w /app/f1'  ---保存模式空間的內(nèi)容到指定文件
1
2
3
4
5
[root@centos6 ~]#cd /app
[root@centos6 app]#ls
f1  mkdvdiso.sh
[root@centos6 app]#cat f1
2
3
4
[root@centos6 app]#seq 5|sed '3r /etc/issue'  ---讀取文件中的內(nèi)容到指定的行后
1
2
3
CentOS release 6.9 (Final)
Kernel \r on an \m
\l
\n
\t
4
5
[root@centos6 app]#sed -e '/^#/d' -e '/^$/d' /etc/fstab  ---多點(diǎn)編輯,表示以#開頭的行和空行刪除
UUID=07e3094b-c50d-4568-aee5-b2f76d91c962 /                       ext4    defaults        1 1
UUID=4a2031c3-8595-489e-bc6d-1e2c31860c7b /app                    ext4    defaults        1 2
UUID=a056e3b8-7cc2-4aea-9308-9b0744741394 /boot                   ext4    defaults        1 2
UUID=953b7594-f906-4d3e-8a3a-a6bb79b1c900 swap                    swap    defaults        0 0
UUID=d027885d-e32b-42e7-94aa-329130282748 /home                   ext4    usrquota,grpquota        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
[root@centos6 app]#vim sed.txt
  1 /^s/d
[root@centos6 app]#cat f2
bbbdddd
sdfgggg
1234445
[root@centos6 app]#sed -f sed.txt f2  ---調(diào)用文件中的腳本
bbbdddd
1234445
[root@centos6 app]#sed -n 's/ext4/xfs/p' /etc/fstab   --- -p表示只打印匹配成功的行
UUID=07e3094b-c50d-4568-aee5-b2f76d91c962 /                       xfs    defaults        1 1
UUID=4a2031c3-8595-489e-bc6d-1e2c31860c7b /app                    xfs    defaults        1 2
UUID=a056e3b8-7cc2-4aea-9308-9b0744741394 /boot                   xfs    defaults        1 2
UUID=d027885d-e32b-42e7-94aa-329130282748 /home                   xfs    usrquota,grpquota        0 0
[root@centos6 app]#sed -nr 's/(bash)$/\1er/pg' p1---分組和后向引用
root:x:0:0:root:/root:/bin/basher
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/basher
zhang:x:500:500::/home/zhang:/bin/basher
tom:x:504:505::/home/tom:/bin/basher
libai:x:510:510::/home/libai:/bin/basher
dufu:x:512:512::/home/dufu:/bin/basher
zhaoritian:x:514:514::/home/zhaoritian:/bin/basher
gentoo:x:515:501:Gentoo Distribution:/home/gentoo:/bin/basher
natasha:x:516:516::/home/natasha:/bin/basher
harry:x:517:504::/home/harry:/bin/basher
alice:x:518:518::/home/alice:/bin/basher
bash:x:519:520::/home/bash:/bin/basher
testbash:x:520:521::/home/testbash:/bin/basher
sh:x:521:522::/home/sh:/bin/basher
[root@centos6 app]#sed -nr 's/bash$/&er/pg' p1 ---可以用&代替前面匹配的內(nèi)容
root:x:0:0:root:/root:/bin/basher
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/basher
zhang:x:500:500::/home/zhang:/bin/basher
tom:x:504:505::/home/tom:/bin/basher
libai:x:510:510::/home/libai:/bin/basher
dufu:x:512:512::/home/dufu:/bin/basher
zhaoritian:x:514:514::/home/zhaoritian:/bin/basher
gentoo:x:515:501:Gentoo Distribution:/home/gentoo:/bin/basher
natasha:x:516:516::/home/natasha:/bin/basher
harry:x:517:504::/home/harry:/bin/basher
alice:x:518:518::/home/alice:/bin/basher
bash:x:519:520::/home/bash:/bin/basher
testbash:x:520:521::/home/testbash:/bin/basher
sh:x:521:522::/home/sh:/bin/basher
[root@centos6 app]#ifconfig eth2|sed -n -e '2s/^.*addr://' -e '2s/ .*$//p'  ---取出IP地址
192.168.25.179
[root@centos6 app]#ifconfig eth2|sed '2!d;s/^.*addr://;s/ .*$//'   ---分號(hào)表示可以執(zhí)行多次操作
192.168.25.179
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末改抡,一起剝皮案震驚了整個(gè)濱河市矢炼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌阿纤,老刑警劉巖句灌,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異欠拾,居然都是意外死亡胰锌,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進(jìn)店門藐窄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來资昧,“玉大人,你說我怎么就攤上這事荆忍「翊” “怎么了?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵刹枉,是天一觀的道長叽唱。 經(jīng)常有香客問我,道長嘶卧,這世上最難降的妖魔是什么尔觉? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮芥吟,結(jié)果婚禮上侦铜,老公的妹妹穿的比我還像新娘专甩。我一直安慰自己,他們只是感情好钉稍,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布涤躲。 她就那樣靜靜地躺著,像睡著了一般贡未。 火紅的嫁衣襯著肌膚如雪种樱。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天俊卤,我揣著相機(jī)與錄音嫩挤,去河邊找鬼。 笑死消恍,一個(gè)胖子當(dāng)著我的面吹牛岂昭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播狠怨,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼约啊,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了佣赖?” 一聲冷哼從身側(cè)響起恰矩,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎憎蛤,沒想到半個(gè)月后外傅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蹂午,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年栏豺,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了彬碱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片豆胸。...
    茶點(diǎn)故事閱讀 38,646評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖巷疼,靈堂內(nèi)的尸體忽然破棺而出晚胡,到底是詐尸還是另有隱情,我是刑警寧澤嚼沿,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布估盘,位于F島的核電站,受9級特大地震影響骡尽,放射性物質(zhì)發(fā)生泄漏遣妥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一攀细、第九天 我趴在偏房一處隱蔽的房頂上張望箫踩。 院中可真熱鬧爱态,春花似錦、人聲如沸境钟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽慨削。三九已至洞渔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間缚态,已是汗流浹背磁椒。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留玫芦,地道東北人衷快。 一個(gè)月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像姨俩,于是被迫代替她去往敵國和親蘸拔。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容

  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯(cuò)誤還是無法避免 以后資料會(huì)慢慢更新 大...
    數(shù)據(jù)革命閱讀 12,146評論 2 34
  • Sed工具工作原理及特性 1. sed是流編輯器环葵,每一次讀取一行到內(nèi)存中调窍,即稱之為模式空間(pattern spa...
    魏鎮(zhèn)坪閱讀 10,936評論 0 12
  • sed的定義和功能:sed是一種行編輯器,也是一個(gè)管線命令张遭,可以分析 standard input邓萨,而且 sed還...
    會(huì)玩linux不閱讀 298評論 0 0
  • 本文承接之前寫的三十分鐘學(xué)會(huì)AWK一文,在學(xué)習(xí)完AWK之后菊卷,趁熱打鐵又學(xué)習(xí)了一下SED缔恳,不得不說這兩個(gè)工具真的堪稱...
    mylxsw閱讀 4,391評論 3 74
  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說閱讀 10,930評論 6 13