背景
sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作.
sed意为流编辑器(StreamEditor),在Shell脚本和Makefile中作为过滤器使用非常普遍,也就是把前一个程序的输出引入sed的输入,经过一系列编辑命令转换为另一种格式输出。sed和vi都源于早期UNIX的ed工具,所以很多sed命令和vi的末行命令是相同的。
sed命令行格式为:
sed option 'script' file1 file2 ...
sed option -f scriptfile file1 file2 ...
常用参数:
--version |
显示sed版本 |
--help |
显示帮助文档 |
-n |
取消默认输出 |
-e | 指定多个指令执行 |
-i |
修改文件内容(默认不修改原文件内容) |
-r |
使用扩张正则表达式 |
输出占位符
a(append) | 追加 |
i(insert) |
插入 |
d(delete) |
删除 |
s(substitution) |
替换 |
p(print) |
打印 |
主要的介绍了这么多,下面开始实践(实践中出真理)
1. 显示第二行
原始数据
1
|
[
#20#sea@~ 22:06:04]$sed '2p' test.txt
|
此时我们发现 [bbbbb.....bbb] 多输出一行,证明2p打印了第二行, 此时我们发现原始数据也打印了,不符合题意.
此时加上 [ -n ]参数, 精确只打印第二行
2. 使用 -e 多条语句 输出指定行的数据
原始数据
1
|
[
#23#sea@~ 22:06:04]$ sed -n -e '2p' -e '4p' test.txt
|
3. 输假设一个文本(test.txt)中有1-100行数据,要求打印出20-30行数据
首先我们利用循环机制模拟出100行数据
1
|
[
#24#sea@~ 22:06:04]$ for i in `seq 100`; do echo $i >> test.txt ; done
|
利用wc -l 查看文件行数
1
|
[
#25#sea@~ 22:32:29]$wc -l test.txt
|
题目实现如下
注:sed 的功能不止如此,因时间和生产环境有限,更详细的sed介绍文章将后续发布, 敬请关注.
本文转自asd1123509133 51CTO博客,原文链接:http://blog.51cto.com/lisea/1795754,如需转载请自行联系原作者