shell编程-sed

一、语法

sed [-hnV][-e<script>][-f<script文件>][文本文件]

参数说明:

-e<script>或--expression=<script> 以选项中指定的script来处理输入的文本文件。
-f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
-h或--help 显示帮助。
-n或--quiet或--silent 仅显示script处理后的结果。
-V或--version 显示版本信息。

动作说明

a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行
d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行)
p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g

注:

在sed后加上-i执行后会修改原文件
$代表最后的意思

二、以行为单位的新增/删除

1.删除2~5行删除
sed '2,5d'
2.只删除第2行
sed '2d'
3.删除第3到最后一行
sed '3,$d'
4.在第2行后(亦即是加在第三行)加上drink tea?字样
sed '2a drink tea?'
5.在第2行前加上drink tea?字样
sed '2i drink tea?'
6.2行之后追加两行,例如Hello......与shell!
sed '2a Hello......\
\>shell!'
sed '2a Hello......\shell!'
7.2行之后追加三行(2行文字,1行空行)
sed '2a Hello......\shell!\n'
8.2行之后追加一行空行
sed '2a \ '
sed '2a \\'
9.2行之后追加两行空行
sed '2a \\n'

三、以行为单位的替换与显示

1.将2~5行的内容取代成Hello shell
sed '2,5c Hello shell'
2.显示文件的5~7行
sed -n '5,7p'

四、数据的搜寻并显示

1.搜索有关root关键字的行
sed -n '/root/p'

使用-n的时候只打印包含模板的行

五、数据的搜寻并删除

1.删除包含root的行,其他行输出
sed '/root/d'

六、数据的搜寻并执行命令

1.找到root对应的行,执行后面花括号中的一组命令,每个命令之间用分号分隔,这里Hello替换成bash
sed -n '/root{s/Hello/bash/;p;q}'

最后的q是退出

七、数据的搜寻并替换

1.基本格式
sed 's/要被取代的字符串/新的字符串/g'
2.文本里每一行结尾若为.则换成!
sed 's/\\.$/\\!/g'
例:提取ip
/sbin/ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.116  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::f816:3eff:fe47:959d  prefixlen 64  scopeid 0x20<link>
        ether fa:16:3e:47:95:9d  txqueuelen 1000  (Ethernet)
        RX packets 1388641  bytes 402972654 (384.3 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1408963  bytes 164970470 (157.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

/sbin/ifconfig eth0 | grep 'inet'     //inet后边没有空格
        inet 192.168.0.116  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::f816:3eff:fe47:959d  prefixlen 64  scopeid 0x20<link>
/sbin/ifconfig eth0 | grep 'inet '    //inet后边有一个空格
        inet 192.168.0.116  netmask 255.255.255.0  broadcast 192.168.0.255

/sbin/ifconfig eth0 | grep 'inet addr' | sed 's/inet //g'    //无^.*inet 
        192.168.0.116  netmask 255.255.255.0  broadcast 192.168.0.255
/sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*inet //g'
192.168.0.116  netmask 255.255.255.0  broadcast 192.168.0.255

/sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g' | sed 's/netmask//g'    //无netmask.*$
192.168.0.116   255.255.255.0  broadcast 192.168.0.255
/sbin/ifconfig eth0 | grep 'inet ' | sed 's/^.*inet //g' |sed 's/netmask.*$//g'
192.168.0.116    //获得ip

八、多点编辑

1.删除第3行到末尾的数据,并把bash替换成Hello
sed -e '3,$d' -e 's/bash/Hello/'

-e表示多点编辑,第一个编辑命令删除第3行到末尾的数据,第二条命令搜索bash替换为Hello

示例文件
#vim shell_sed.txt
zhangsan
zhangsan
lisi
lisi

wangwu
wangwu
用ergou替换lisi:
#sed -i 's/lisi/ergou/' shell_sed.txt
使用多重指令:
#sed -i 's/lisi/ergou/ ; s/zhangsan/lisi/' shell_sed.txt
使用脚本文件:
脚本:name
s/lisi/ergou/
s/zhangsan/lisi/
sed -f name shell_sed.txt
sed -f name shell_sed.txt >newshell_sed.txt //执行脚本并保存修改后的文件

sed流编辑器用法及解析

sed '1d' shell_sed.txt  //删除文件的第一行
sed '1,2d' shell_sed.txt  //删除文件的第一、第二行
sed '2,$d' shell_sed.txt  //删除文件的第二行到最后一行
sed '/root/d' shell_sed.txt  //删除匹配到root的一行
sed '/root/2d' shell_sed.txt  //删除匹配到root的一行以及下一行
sed '1~2d' shell_sed.txt  //删除奇数行
sed '0~2d' shell_sed.txt  //删除偶数行
sed 's/wangwu/lisi/g' shell_sed.txt  //全局替换
sed 's/wangwu/lisi/gi' shell_sed.txt  //忽略大小写的全局替换
sed '/^$/d' shell_sed.txt  //删除空行
sed -i.bak 's/wangwu/lisi/' shell_sed.txt  //产生一个备份的文件以防后悔 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,402评论 6 499
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,377评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,483评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,165评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,176评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,146评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,032评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,896评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,311评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,536评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,696评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,413评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,008评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,815评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,698评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,592评论 2 353