每日一道shell练习(09)——sed处理

1. 习题

对一个文件,1至5行删除带有英文的行,6至10行删除里面的英文字符;

2. 分析

这种要求,用sed命令就可以解决了,主要用到匹配替换的知识。

3. 脚本

#!/bin/bash

sed  -n ‘1,5p‘  a.txt  |  sed  ‘/[a-zA-Z]/d‘
sed  -n ‘6,10p‘ a.txt  |  sed  ‘s/[a-zA-Z]//g‘
sed  -n ‘11,$p‘ a.txt

前两个要求,必须使用行号匹配。主要sed是一个流编辑处理器,它是一行一行地接收输入数据,然后再处理。

-n 和 -p 选项配合使用,就是只输出匹配的内容。所以,在前两行命令的意思就相当于,匹配到对应的行后,只处理这些行,然后通过管道,把它们传给后边的sed命令处理。

第三行的sed命令,就是把不用处理的文本都直接输出屏幕。这样,在屏幕上看来,就相当于完整地处理了整个文本的内容了。

原文地址:http://blog.51cto.com/hellocjq/2121562

时间: 2024-10-11 10:22:31

每日一道shell练习(09)——sed处理的相关文章

每日一道shell练习(06)——检测端口服务

1. 题目 写一个脚本,判断本机的80端口(假设服务为httpd)是否开启着,如果开启着就什么都不做,如果发现端口不存在,那么重启一下httpd服务,并发邮件通知你自己.脚本写好后,每分钟执行一次,也可以写一个死循环的脚本,30S检查一次. 2. 习题分析 首先,我们要区分要求,这里的要求是检测80端口是否在监听,而不是检测httpd服务是否运行,虽然两者有一定的联系,但并不是对等的关系.检测端口状态用 netstat -lntp 命令.如果要求检测远程主机的端口状态,则用一下的命令: nmap

每日一道shell脚本练习(01)

0. 引言 准备开一个新坑,每天更新一道shell练习.因为shell脚本属于那种不练习就会生疏,甚至忘记的技能,所以,为了对抗遗忘阻力,我只能不断加强练习了. 1. 第一天练习题目 [题目]请按照这样的日期格式(xxxx-xx-xx)每日生成一个文件,例如今天生成的文件为2018-04-08.log,并且把磁盘的使用情况写到这个文件中,不用考虑cron,仅仅写脚本即可. [分析]第一点,要明白 linux 命令 date 的用法,打印"xxxx-xx-xx"这样的时间格式用date

每日一道shell练习(03)

1 . 习题 写一个脚本计算linux系统所有进程占用内存大小的和 2. 习题分析 2.1.第一个问题,在哪里收集进程的数据 用top或者ps都可以获取每个进程的内存使用大小.获得大小之后,就可以通过一个循环计算它们的和了. 2.2. ps 命令的问题 通过累加 "ps aux" 命令显示的 RSS 列来统计全部进程总共占用的物理内存大小,这是不对的.因为,RSS(resident set size)表示常驻内存的大小,但是由于不同的进程之间会共享内存,所以把所有进程RSS进行累加的方

每日一道shell练习(04)

1. 习题 设计一个脚本,监控远程的一台主机(假设 ip地址是110.110.110.114)的存活状态,当发现宕机时发一封邮件给你自己. 提示: 你可以使用 ping 命令 : ping -c 10 110.110.110.114 脚本可以搞成死循环. 2. 习题分析 其实这中需求并不困难,题目也给出了思路.关键是确定一个阈值,当检测到结果符合阈值,就触发警告,发送警告邮件. 我们可以先在主机上尝试执行一下 ping -c 命令: [[email protected] work]# ping

每日一道shell练习(10)——统计字符数

1. 习题 将下面这句话中字符数在6以内的单词打印出来: Bash also interprets a number of multi-character options . 2. 习题分析 思路:用for循环将每个单词取出,才能单独统计.for循环的分隔符有空格.tab键和回车键,刚好这句话的分隔符是空格键. 3. 脚本 #!/bin/bash line='Bash also interprets a number of multi-character options .' sum=0 for

每日一道shell 练习(05)——批量打包文件

1. 习题 找到 /123 目录下所有后缀名为 .txt 的文件 批量修改.txt 为 .txt.bak 把所有.bak 文件打包压缩为 123.tar.gz 批量还原文件的名字,即把增加的.bak 再删除 2. 习题分析 首先要想办法找出 .txt 结尾的文件,用 find 命令. 打包命令用 tar czvf 就可以搞定了,关键是如何同时将所有 .bak 文件打包. 还原文件名有点复杂,关键是如何找到原来的文件名. 3. 具体脚本 在脚本总已经加进了我的分析,可以看看 [[email pro

第四章 shell学习之sed命令和awk编程

sed命令 sed只是对缓冲区中原始文件的副本进行编辑,不改变源文件,所以要保存则要重定向到另一个文件 sed三种方式: 1.sed [选项] 'sed命令' 输入文件 2.sed [选项] -f sed脚本文件 输入文件 3../sed脚本文件 输入文件 其中3的sed脚本文件要以#! bin/sed -f等开头 选项: -n 不打印所有行到标准输出,默认先打印匹配的再打印所有 -e 关联多个sed命令 -f 调用sed脚本文件 定位文本: x x为指定行号 x,y 从x到y行 /patter

shell命令(4)——sed, paste

sed命令  sed --help sed是非交互式的编辑器,它不会修改文件,默认把结果都打印到屏幕上. sed的用法有很多,这里只介绍一下常用的 1.删除一个文件的某些行,或取出文件中得某些行 删除c中得第2~4行: 取出第1~3行: 删除包含'1'的行到包含'9'的行: sed不像grep,不管是否找到指定的模式,它的退出状态都是0.只有当命令存在语法错误时,sed的退出状态才不是0. // TODO shell命令(4)--sed, paste

0913&0915练习:shell Scripts、sed&awk

知识点梳理:点击链接进入 1.shell简介及变量.脚本相关概念 2.bash编程之:条件测试 3.bash编程之:算术运算 4.bash编程之:if语句                5.bash编程之:case语句.read与用户交互 6.bash编程之:流程控制 7.bash编程之:函数与数组 8.sed命令--流编辑器 9.awk命令--报告生成工具 练习1: 写一个脚本:如果某路径不存在,则将其创建为目录:否则显示其存在,并显示内容类型: 运行脚本测试: 练习2: 写一个脚本,完成如下