shell实例浅谈之六文件特定行打印的多种方法
来源:互联网 发布:微信js接口文档 编辑:程序博客网 时间:2024/06/06 09:50
一、问题
Sed和AWK在处理文件方面有很强的优势,还有head和tail等文件处理工具的使用,grep也可实现文本的搜索。上述命令都可以在后面直接加文件名,不需要在前面使用cat添加管道,cat会影响命令执行的效率,本文中cat -n /etc/services实在测试时可很方便的查看到具体的行号。
二、详解
1、查看文件的第20行到30行的内容
以系统的/etc/services为例,cat -n /etc/services可以查看文件的行号。
(1)方法一:head和tail
head -30 /etc/services | tail -11(通过cat -n /etc/services | head -30 | tail -11查看具体行号)。
(2)方法二:sed
sed -n '20,30p' /etc/services(通过cat -n /etc/services | sed -n '20,30p'查看具体行号)。
(3)方法三:awk
awk '{if(NR>19 && NR <31) printf $1"\n"}' /etc/services(通过cat -n /etc/services | awk '{if(NR>19 && NR <31) printf $0"\n"}'查看具体行号)。
2、查看文件的特定行,设置步长
以系统的/etc/services为例,cat -n /etc/services可以查看文件的行号。
每隔十行打印一行数据(比如打印第1行、第11行、第21行):先生成序列号然后查找特定行。
(1)方法一:
sed -n '1~10p' /etc/services查找特定行(通过cat -n /etc/services |sed -n '1~10p' 查看文件的行号)。
(2)方法二:限定从1到51行内,sed方法
#!/bin/bashfor n in `seq 1 10 51`do sed -n "${n}p" /etc/services #cat -n /etc/services | sed -n "${n}p"done
(3)方法三:限定从1到51行内,生成序列方式不同
#!/bin/bashfor((i=1; i<52; i=i+10))do sed -n "${i}p" /etc/services #cat -n /etc/services | sed -n "${i}p"done
(4)方法四:限定从1到51行内,awk方法
awk '{if(NR%10==1 && NR >0 && NR < 51) printf $0"\n"}' /etc/services,
通过cat -n /etc/services | awk '{if(NR%10==1 && NR >0 && NR < 51) printf $0"\n"}'查看文件的行号。
三、总结
(1)Shell脚本的三剑客(awk、sed和grep)的功能很强大,可以相互支持并相互转换。
(2)多从实践中总结不同的方法,多了解他人的思路,有时他人的会更加简洁易懂并拓展了自己的视野。
(3)多从网上找面试题,自己解答,然后对比答案,从痛苦中获取知识。
(4)上述两个问题也会有更好的解决方案,可请大家留言,也可联系本人yang.ao@i-soft.com.cn。- shell实例浅谈之六文件特定行打印的多种方法
- shell实例浅谈之文件特定行打印的多种方法
- Python实例浅谈之六读写文件
- Android实例demo5之FileOutputStream文件写入的多种方法
- shell读取文件的多种方法
- shell实例浅谈之十二批量解压zip文件
- shell实例浅谈之十二批量解压zip文件
- shell实例浅谈之三产生随机数七种方法
- shell实例浅谈之产生随机数七种方法
- shell实例浅谈之五解决网络中DOS攻击的方法
- shell实例浅谈之五解决网络中DOS攻击的方法
- shell实例浅谈之检测用户输入串的合法性
- 使用bash shell删除目录中的特定文件的3种方法
- 获取某一特定Activity实例的方法
- shell实例浅谈之二批量创建文件并重新命名
- shell实例浅谈之二批量创建文件并重新命名
- shell实例浅谈之二批量创建文件并重新命名
- [shell] shell echo打印换行的方法
- android中各个度量单位的解释,分享给大家
- C#中,将一个DataTable转为List
- linux sed
- 深入理解SELinux/SEAndroid
- 行为型模式--状态模式
- shell实例浅谈之六文件特定行打印的多种方法
- Java内部类总结 (吐血之作)
- 第一节 MongoDB介绍及下载与安装
- Maven使用Cargo实现自动化部署
- HTML5高级编程之像素处理及粒子效果
- Linux系统信息查看命令大全
- 关于netfiler中比较详细的解释
- 快汇宝揭秘:400电话机票骗子
- Go语言语法