什么是sed

s e d是一个非交互性文本流编辑器。它编辑文件或标准输入导出的文本拷贝。标准输入可
能是来自键盘、文件重定向、字符串或变量,或者是一个管道的文本。s e d可以做些什么呢?
别忘了,Vi也是一个文本编辑器。s e d可以随意编辑小或大的文件,有许多s e d命令用来编辑、
删除,并允许做这项工作时不在现场。s e d一次性处理所有改变,因而变得很有效,对用户来
讲,最重要的是节省了时间。
本章内容有:
• 抽取域。
• 匹配正则表达式。
• 比较域。
• 增加、附加、替换。
• 基本的s e d命令和一行脚本。
可以在命令行输入s e d命令,也可以在一个文件中写入命令,然后调用s e d,这与a w k基本
相同。使用s e d需要记住的一个重要事实是,无论命令是什么, s e d并不与初始化文件打交道,
它操作的只是一个拷贝,然后所有的改动如果没有重定向到一个文件,将输出到屏幕。
因为s e d是一个非交互性编辑器,必须通过行号或正则表达式指定要改变的文本行。
本章介绍s e d用法和功能。本章大多编写的是一行命令和小脚本。这样做可以慢慢加深对
s e d用法的了解,取得宝贵的经验,以便最终自己编出大的复杂s e d脚本。
和g r e p与a w k一样, s e d是一种重要的文本过滤工具,或者使用一行命令或者使用管道与
g r e p与a w k相结合。

////////////////////////////以下是copy来的参考,没有考证
给解释一下这个吧:

sed '/regex/{x;p;x;}' file [/quote]


$ cat foo
11111111111111
22222222222222
test33333333333333
44444444444444
55555555555555

$ sed '/test/{x;p;x;}' foo
11111111111111
22222222222222

test33333333333333
44444444444444
55555555555555


解释:
sed 中 x 的用法
The exchange function interchanges the contents of the pattern space and the holding area. The maximum number of addresses is two.
即交换保持空间hold space和模式空间pattern space的内容

sed 中 p 的作用是把模式空间复制到标准输出。

分析一下该命令执行过程中保持空间和模式空间的内容

命令 保持空间 模式空间
x 执行前:null 执行后:testn 执行前:testn 执行后:null
p 执行前:null 执行后:testn 执行前:testn 执行后:null 输出一个空行
x 执行前:testn 执行后:null 执行前:null 执行后:testn

(注:把test所在的行简写为test了)

引申:
可以试验一下 sed '/test/{x;p;}' foo 或者 sed '/test/{p;x;}' foo 等,看看结果,体会两个空间的变化

相应的:
sed '/regex/G' 是在匹配regex的所有行下面输出一个空行
sed '/regex/{x;p;x;G;}' 是在匹配regex的所有行前面和下面都输出一个空行 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值