sed使用小命令及课后作业

Stream EDitor,  行编辑器

sed 是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space ),接着用sed 命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed 主要用来自动编辑一个或多个文件, 简化对文件的反复操作, 编写转换程序等

实用选项及用法:


sed -n “p” f1 :只打印地址p一次 (不加n会打印两次)

sed -n “2p” f1:只打印第二行内容
cat -n |sed -n “3,10p”f1 :显示3,10行内容
cat -n |sed -n “3,10p”f1 显示3,13行内容
cat -n |sed -n ‘/root/p’ f1:包含root的行(使用正则表达式模式)
sed -n ‘/^/ ,/ ^/p’ f1 :显示已某个单词开头到已某个单词开头的行 铆钉行首
sed -n ’10 ,/ ^/p’ f1 :显示第十行到某个单词开头的行
sed -n ‘1~2p’ f1 :打印奇数行
sed -n ‘2~2p‘ f1:打印偶数行
sed ‘2~2d’ f1 :删除偶数行
sed ’20a…….’f1 :在第20行后面增加内容…….
sed ’20a\ …….\n,,,,,,,,,,’f1 :在第20行后面增加内容…….并且前面显示以空格分开,并且进行换行再显示,,,,,
sed ’10,20i\ …….\n,,,,,,,,,,’f1:在第10-20行前面增加内容…….并且前面显示以空格分开,并且进行换行再显示,,,,,
sed ’10,20c\ …….\n,,,,,,,,,,’f1:使用后面的三段符号替代10-20行内容
sed -i.conf ’10d’ f1 :删除第10行并提前备份f1 文件名称一个以.cof结尾,如果不在i后面加.conf 那直接破坏文件,删除第十行并保存。
sed ‘1-6=’ :1-6行打印行号
sed -n ‘2~2!p‘ f1 :取反,只取单数
sed ‘s/root/ROOT/g’ f1:把文件中的root全部替换成大写,不加g只替换第一个
sed -n ‘s/root/ROOT/gpw /root/f22’ f1:把文件中的root全部替换成大写,并把显示行打印出来,并把更改的行重新保存到一个文件里面。
sed ‘/^$/d’ :删除空行

应用作业

1 、删除centos7 系统/etc/grub2.cfg 文件中所有以空白开头的行行首的空白字符

#cat f3 | sed ‘s/^[[:space:]]\+//g’
2 、删除/etc/fstab 文件中所有以# 开头,后面至少跟一个空白字符的行的行首的# 和空白字符
cat /etc/fstab |sed -r ‘s@^#[ :space: ]?@@g’
3 、在centos6 系统/root/install.log 每一行行首增加#号 号
#cat /root/install.log|sed -r “s/(^[^#])/#&/”
4 、在/etc/fstab 文件中不以# 开头的行的行首增加#号 号
cat /etc/fstab|sed -r “s/(^[^#])/#&/”
5 、处理/etc/fstab 路径, 使用sed 命令取出其目录名和基名
#echo ‘/etc/fstab’ |sed -r ‘s@(/.*/)(/?.*)@\2@g’
echo ‘/etc/fstab’ |sed ‘s@/.*/@@g’
echo ‘/etc/fstab’ |sed -r ‘s@(/.*/)?.*@\1@g’
6 、利用sed 取出ifconfig 命令中本机的IPv4 地址
# ifconfig eth0 |sed -n ‘2p’ |sed ‘s/^.*addr://’|sed ‘s/B.*//’
7 、统计centos 安装光盘中Package 目录下的所有rpm 文件的以 以. 分隔倒数第二个字段的重复次数
ls /run/media/root/CentOS\ 7\ x86_64/Packages/ |rev|cut -d. -f2 |rev|sort |uniq -c
ls /run/media/root/CentOS\ 7\ x86_64/Packages/ |sed -r ‘s@.*\.(.*)\.rpm@\1@’|sort|uniq -c
8 、统计/etc/init.d/functions 文件中每个单词的出现次数,并排序(用grep 和sed 两种方法分别实现)
cat /etc/init.d/functions |grep -o ‘.’|sort|uniq -c
cat /etc/init.d/functions |sed ‘s@.@\n&@g’|sort|uniq -c

原创文章,作者:fujunlong,如若转载,请注明出处:http://www.178linux.com/71326

(0)
fujunlongfujunlong
上一篇 2017-03-18 18:18
下一篇 2017-03-19 07:52

相关推荐

  • shell脚本之选择与执行

    流程控制  过程式编程语言: 顺序执行 选择执行 循环执行 选择执行:if语句  注意:if语句可嵌套  单分支 if 判断条件:then 条件为真的分支代码 fi  双分支 if 判断条件; then 条件为真的分支代码 else 条件为假的分支代码 fi 多分支 if…

    Linux干货 2016-09-19
  • 搭建缓存功能的WEB服务集群

    搭建缓存功能的WEB服务集群 实验简介 本文主要介绍双主模型的nginx proxy高可用集群的搭建方式。实验环境: 使用nfs服务器提供页面数据共享 使用单独的mariadb服务器提供关系型数据库 使用两台httpd服务器处理动态的php和静态页面资源 使用两台nginx服务器处理图片资源 使用两台varnish服务器作缓存处理 使用两台nginx作代理 …

    Linux干货 2017-07-15
  • 设计模式 ( 十七) 状态模式State(对象行为型)

    设计模式 ( 十七) 状态模式State(对象行为型) 1.概述 在软件开发过程中,应用程序可能会根据不同的情况作出不同的处理。最直接的解决方案是将这些所有可能发生的情况全都考虑到。然后使用if… ellse语句来做状态判断来进行不同情况的处理。但是对复杂状态的判断就显得“力不从心了”。随着增加新的状态或者修改一个状体(if else(或swit…

    Linux干货 2015-07-27
  • week7

    1、创建一个10G分区,并格式为ext4文件系统; (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl; (2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳; fdisk /dev/sdb  按提示创建出来10G分区 查看1:…

    Linux干货 2016-12-08
  • 基本网络设置

    我们在上网的时候会遇到各种各样的问题,比如有时候网络不通,没有ip地址,或者ip地址有冲突等等,这就需要我们懂得一些网络的配置,方便以后使用。基本网络配置:主机名,ip地址,网关,DNS服务器。1、 主机名的配置第一种方法:在配置文件修改Centos7版本:vim /etc/hostname 改过配置文件后需要使其生效,命令为hostname centos7…

    2017-09-09
  • Linux的终端类型

            Linux的终端类型         Linux终端的定义         Linux终端的分类 &nb…

    Linux干货 2016-10-18