sed命令学习与练习--20个例子

2 篇文章 0 订阅
1 篇文章 0 订阅

sed命令理论知识

  sed是非交互式的编辑器。sed工具不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。
  sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。具体过程如下:首先sed把当前正在处理的行保存在一个临时缓存区中(也称为模式空间),然后处理临时缓冲区中的行,完成后把该行发送到屏幕上。sed每处理完一行就将其从临时缓冲区删除,然后将下一行读入,进行处理和显示。处理完输入文件的最后一行后,sed便结束运行。sed把每一行都存在临时缓冲区中,对这个副本进行编辑,所以不会修改原文件。
  参数:
    -a :新增,后面可以接字串,这些字串会在新的一行出现(目前的下一行)
    -c :取代,后面可以接字串,这些字串可以取代 n1,n2 之间的行
    -d :删除
    -i :修改源文件
    -p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行
     -s :取代,可以直接进行取代的工作,通常这个 s 的动作可以搭配正规表示法
     -n :取消默认的完整输出,只要需要的
     -r : sed 使用扩展正则表达式
     -e :允许多项编辑

sed命令练习

1.显示test文件的3-9行:

# sed -n '3,9p' test.txt

在这里插入图片描述

2.显示包含oo字符串的行到包含gin字符串的行:

# sed -n '/oo/,/gin/p' test.txt

在这里插入图片描述

3.在文件第一行添加haha,文件结尾添加yesyes:

# sed -e 'li haha' -e '$a yesyes' test.txt

在这里插入图片描述

4.用hahaha替换oo,打印前20行:

# sed -n -e 's/oo/hahaha/g' -e '1,20p' test.txt

在这里插入图片描述

5.删除空行和以#开头的行:

# sed -e '/^$/d' -e '/^#/d' test.txt

在这里插入图片描述

6.取出一个文件路径的目录名称:

# echo "/etc/sysconfig/network" |sed -r 's@^(/.*/)[^/]+/?@\1@g'

在这里插入图片描述

7.在第8行下面插入hahaha第10行上面插入lalala:

# sed -e '8a\hahaha' -e '10\lalala' -n -e '1,10p' test.txt

在这里插入图片描述

8.显示第25行到最后,并在每行的后面添加hhh:

# sed -e '25,$s/^.*$/hhh$/' -n -e '25,$p' test.txt

在这里插入图片描述

9.删除20到30行最后一个单词(字符):

# sed -r -e '20,30s/.$//' -n -e '20,30p' test.txt

在这里插入图片描述
在这里插入图片描述

10.将15到25行第一个字符与最后一字符对调:

# sed -r -e '15,25s/^(.)(.*)(.)$/\3\2\1/' -n -e '15,25p' test.txt

在这里插入图片描述

11.为文件中每个大写字母添加括号:

# sed -r 's/([A-Z])/(\1)/g' test.txt

在这里插入图片描述

12.文件中出现所有sbin都被替换成hahah,只有发生变化的行才被打印:

# sed -n 's/sbin/hahah/gp' test.txt

在这里插入图片描述

13.解除文件注释,并删除4-6行:

# sed -e 's/^#//g' -e '4,6d' test.txt

在这里插入图片描述

14.删除1-3行并用root替换sbin:

# sed -e '1,3d' -e 's/sbin/root/g' test.txt

在这里插入图片描述

15.删除1-8行并打印1-20行:

# sed -e '1,8d' -n -e '1,20p' test.txt

在这里插入图片描述

16.把所有var全部替换成root,并将第一个字符和最后一个字符对调:

# sed -e 's/var/root/g' -r -e 's/^(.)(.*)(.)$\3\2\1/' test.txt

在这里插入图片描述

17.删除所有包含var的行:

# sed '/var/'d test.txt

在这里插入图片描述

18.把20行以后的末尾加上awr:

# sed '20,$s/.$/awr/g' test.txt

在这里插入图片描述

19.打印第1到20行,删除15行后面所有的行:

# sed -n -e '1,20p' -e '15,$'d test.txt

在这里插入图片描述

20.将字符串/var替换成/hahaha,打印20,40行:

# sed -e 's#var#hahaha#g' -n -e '20,40'p test.txt

在这里插入图片描述

  • 7
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值