linux三剑客之sed命令详解
上篇文章讲的是文本过滤工具grep linux三剑客之grep命令详解,今天继续讲一下linux三剑客之文本编辑工具sed。
sed 是一种新型的,非交互式的编辑器,它能执行与编辑器 vi 相同的编辑任务。sed 编辑器没有提供交互式使用方式,使用者只能在命令行输入编辑命令、指定文件名,然后在屏幕上查看输出。
sed 编辑器没有破坏性,它不会修改源文件,而是将源文件拷贝一份放在操作空间中,然后对操作空间中的副本进行操作,可以使用重定向符号将结果输出到指定文件或者使用-i参数将结果覆盖回源文件。默认情况下,所有的输出行都被打印到屏幕上。
linux三剑客均支持管道符和正则表达式,所以sed也支持从管道符接受标准输入或者从命令行获取参数。
sed命令格式:sed 功能参数 '范围+动作' 文件
例如 sed -n '2,5p' song.sh
sed
- 命令
-n
- 功能参数
2,5
-范围(即要处理哪几行数据,相当于过滤)
p
- 动作,打印
song.sh
- 文件
功能参数:
功能参数 | 解释 |
---|---|
n | 只输出被sed处理的行 |
e | 多重编辑,且顺序会影响结果 |
r | 使用扩展正则 |
i | 将修改的内容覆盖到文档 |
f | 指定一个sed脚本文件到命令行执行 |
范围表达式:
范围表达式 | 解释 |
---|---|
'2,5p' |
打印2-5行 |
'2,+5p' |
打印第2行及其以下5行 |
'2~2p' |
从第二行开始步长为2打印,即打印2,4,6,8……行 |
'/regexp/p' |
打印正则表达式匹配出的行 |
'2,/aaa/p' |
打印第2行到下一次出现aaa的行,如果aaa在第二行之前或者不存在则打印到行尾 |
'/aaa/,/bbb/p' |
打印aaa所在的行到bbb所在的行 |
动作:
动作 | 解释 |
---|---|
p | 打印 |
d | 删除 |
s | 替换 |