sed命令
Posted LeoSanford
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sed命令相关的知识,希望对你有一定的参考价值。
1 sed命令基本用法
sed(stream editor)是流编辑器,可对文本文件和标准输入进行编辑;
sed只是对缓冲区中原始文件的副本进行编辑,并不编辑原始的文件,如果需要保存改动内容,可以选择使用下面两种方法:
重定向、w编辑命令。
2 调用sed有三种方法
- 在Shell命令行输入命令调用sed,格式为:
sed [选项] ‘sed命令’ 输入文件
- 将sed命令插入脚本文件后,然后通过sed命令调用它,格式为:
sed [选项] -f sed脚本文件输入文件
- 将sed命令插入脚本文件后,最常用的方法是设置该脚本文件为可执行,然后直接执行该脚本文件,格式为:
./sed脚本文件输入文件
注:第二种方法脚本文件的首行不以#!/bin/sed –f开头;第三种方法脚本文件的首行是#!/bin/sed –f
3 sed命令选项
选项 |
意义 |
-n |
不打印所有行到标准输出 |
-e |
表示将下一个字符串解析为sed编辑命令,如果只传递一个编辑命令给sed,-e选项可以省略 |
-f |
表示正在调用sed脚本文件 |
4 sed文本定位
选项 |
意义 |
x |
x为指定行号 |
x,y |
指定从x到y的行号范围 |
/pattern/ |
查询包含模式的行 |
/pattern/pattern/ |
查询包含两个模式的行 |
/pattern/,x |
从与pattern的匹配行到x号行之间的行 |
x,/pattern/ |
从x号行到与pattern的匹配行之间的行 |
x,y! |
查询不包括x和y行号的行 |
5 sed编辑命令
选项 |
意义 |
p |
打印匹配行 |
= |
打印文件行号 |
a\\ |
在定位行号之后追加文本信息 |
i\\ |
在定位行号之前插入文本信息 |
d |
删除定位行 |
c\\ |
用新文本替换定位文本 |
s |
使用替换模式替换相应模式 |
r |
从另一个文件中读文本 |
w |
将文本写入到一个文件 |
y |
变换字符 |
q |
第一个模式匹配完成后退出 |
l |
显示与八进制ASCII代码等价的控制字符 |
{} |
在定位行执行的命令组 |
n |
读取下一个输入行,用下一个命令处理新的行 |
h |
将模式缓冲区文本拷贝到保持缓冲区 |
H |
将模式缓冲区文本追加到保持缓冲区 |
x |
互换模式缓冲区和保持缓冲区内容 |
g |
将保持缓冲区内容拷贝到模式缓冲区 |
G |
将保持缓冲区内容追加到模式缓冲区 |
6 示例
6.1 选项示例
只打印第一行
打印包含close关键字的行
调用sed脚本
- 原始文件
- 脚本内容
- 执行结果
6.2 文本定位
sed -n \'$p\' input #匹配最后一行
sed -n \'/close/,$p\' input #打印与close匹配到最后一行
以上是关于sed命令的主要内容,如果未能解决你的问题,请参考以下文章