sed使用

sed和awk的区别还是蛮大的..


awk趋向于针对每行进行单独处理,处理的最小单位是行中的每个域..对每行的处理基本是独立的..我们不能苛求他可以把多行整合起来处理(当然,借助变量我们还是可以做到的..)

sed则是完全针对文件流的..处理的最小单位就是行..他并不对行内容进行划分..而是作为匹配的整体进行操作的..


其实..理论上awk和sed能做到的..vim基本都可以做到..但我们为什么还要用这两个呢?

我想..原因无非有二:

1.awk.sed可以操作任意大的文件..因为每次处理都是针对行..而不是整个文件..相反,传统编辑器vim都是直接对文件进行缓冲的..所以太大的会导致很恐怖的swap文件

2.awk.sed可以指令话..不像vim这类必须手动操作


下面是sed使用的基础..


基本格式还是三种

1.sed option 'command' file

2.sed option -f script file

3../script file   脚本文件开头必须是#!/bin/sed


其实可以看到..格式和awk差不多..


选项记住两个常用的..一个是-n(noprint)..默认sed会把输入文件都输出到标准输出..加了这个选项之后就不会了..另一个是-f..主要用于运行脚本文件..注意的是脚本文件中就不需要在''内部了..


命令中我们首先是选定操作的行..匹配方式有三种

1.选定行数..这个我们通过x,y来选定第x-y行..如果反向选择的话.则为x,y!..y可以省略..则成了针对某一行..此处可以使用$代表最后一行

2.模式匹配..在//之间即可选定匹配..使用基本正则表达式..如果要用扩展型的话..需要加-r选项

3混合匹配..也就是行数+模式..用","隔开就可以了..先后一致


常用命令:

p:print 打印匹配行

=:打印行号

a:对应行后添加文字..换行的话用"\"即可..最后没有"\"当作输入结尾

i:类似a..只是在行之前插入.

d:删除行

c:用对应文字替换对应行

s:进行正则替换..s/pattern/text/option  默认情况下(即没有option)替换第一个匹配式..选项有g(全部替换),p(打印输入.可以取消掉-n的作用),w(将输出导向到某文件)

r:从某文件中读入..并插入到匹配行

w:将匹配行写入到某文件

q:匹配到第一项时直接退出

l:输出控制字符


同awk类似..使用{}进行多语句命令的输入..


不过同awk不同..sed貌似没有强大的逻辑控制能力..比如没有逻辑判断和循环.当然..这也可能是由于sed的定位不同..sed更侧重于编辑文本..而不是像awk那样获取文本信息进行操作..


还是那句话..需要多多的练习才能体会到sed的强大

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值