sed命令实例






Example #1
最简单的命令形式为
pattern + action,如果为提供pattern,则action适用于所有行;如果提供了pattern,则action仅仅适用于符合pattern的行。sed使用的正则表达式和perl中的非常相似。
下面为一典型使用方法:
> sed -e '1,10d'
这句命令是删除标准输入的数据的前10行,然后将剩余的输出到标准输出。
如果命令是:
> sed -e '1,10d' file
这句命令将读入file中的数据,其中前10行都被删除,将剩余的行输入到屏幕上。
注意f ile中的数据并未被删除,这里指的是被提供给sed命令的前10条数据未被采纳,file中的内容没有变动。

-e                  是告诉sed解释器把下一个命令行作为sed程序处理
                      例如sed -e 's/dog/cat/g' -e 's/cat/elephant/g' file
1,10              pattern
d - action     删除命令,通常的语法为 [address1[ , address2 ] ]d
注意由于sed命令中经常会包含正则表达式,而正则表达式中可能会包含shell的关键字,所以习惯上将sed的所有程序放到单引号中,这样就没有问题了。

Example #2:
>sed -n -e '/line/p' test.txt
-n            抑制打印所有行
p              使符合正则表达式的行输出
test.txt     即为sed命令提供输入数据的文件
sed命令默认会输出所有输入的每一行数据,-n 可以禁止这个功能。



Example #3:

>cat file

the black cat was chased by the brown dog.
the black cat was often chased by the brown dog
>sed -e '/often/s/black/white/g' file
the black cat was chased by the brown dog.
the white cat was often chased by the brown dog.

在这个例子中使用了sed最常用的一个用法:


 s/pattern/replacement/[flags]


即将符合pattern的字符替换成replacement,上例中即把“black”替换成”white“。
flag的可取值为:
n           将第n个符合pattern的对象替换成replacement
g           将所有符合pattern的对象替换成replacement
p           将符合pattern的对象替换成replacement后将结果写到标准输出
w file    将符合pattern的对象替换成replacement后将结果写到文件中


Example #4:

[address1[ ,address2]]s/pattern/replacement/[flags]
address1和address2可以是数字,也可以是pattern
如果是数字,则匹配从第address1到第address2的行,例如
sed ‘1,2s/dog/cat/' file
即是匹配从第1行和第2行,并将其中的dog替换成cat,输出结果为:
>cat file
the black cat was chased by the brown dog.
the black cat was often chased by the brown dog
>sed -e '1,2s/black/white/g' file
the black cat was chased by the brown cat.
the white cat was often chased by the brown cat.

如果是pattern则如下例:
>cat file

the black cat was chased by the brown dog.
the black cat was often chased by the brown dog
>sed -e '/often/s/black/white/g' file
the black cat was chased by the brown dog.
the white cat was often chased by the brown dog.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值