美文网首页
shell编程-sed

shell编程-sed

作者: 小浪浮华 | 来源:发表于2020-06-22 14:38 被阅读0次

一、语法

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  //产生一个备份的文件以防后悔 

相关文章

  • BigData~01:Shell

    Shell编程基础 内容大纲 一、Shell编程二、高级文本处理命令:sed、awk、cut三、crontab定时...

  • shell编程-sed

    一、语法 sed [-hnV][-e ][-f ][文本文件] 参数说明:-e 或--expression= 以...

  • [Linux-Shell] 基础知识

    搬运 一、主要内容 shell编程 sed命令 awk命令 crontab定时器 二、简介 Shell是用户与内核...

  • shell编程之sed

  • shell编程之SED

    2021-01-13 sed流编辑器用法及解析sed: stream editor(流编辑器)的缩写. 它们最常见...

  • Perl基础语法

    Perl借用了C, sed, awk shell等脚本以及很多其它编程语言的特性,语法与这些语言类似,但也有自己的...

  • shell 案例

    Shell编程一 Shell防范ARP攻击 Shell编程二 Shell防范DDos攻击 Shell编程三 ...

  • shell对文件的操作

    shell对文件的操作 简介 sed命令 sed小技巧 一、简介 在shell脚本编写中,时常会用到对文件的相关操...

  • 六.Linux之sed命令

    sed使用方式 1.在Shell中输入: 脚本格式: 2.用sed -f命令调用sed脚本文件 3.直接执行sed...

  • 2021-03-11 shell sed命令 修改Info.pl

    shell sed命令 修改Info.plist配置 sed命令 具体细节参考 https://blog.csdn...

网友评论

      本文标题:shell编程-sed

      本文链接:https://www.haomeiwen.com/subject/dypxfktx.html