七、shell学习笔记-sed的使用

1、sed的使用语法

使用sed命令行格式为:
sed [选项] sed命令 输入文件。
sed选项如下:
n 不打印;sed不写编辑行到标准输出,缺省为打印所有行(编辑和未编辑)。p命令可以用来打印编辑行。
c 下一命令是编辑命令。使用多项编辑时加入此选项。如果只用到一条 sed命令, 此选项无用,但指定它也没有关系。
f 如果正在调用sed脚本文件,使用此选项。此选项通知 sed一个脚本文件支持所有的 sed 命令,例如:sed -f myscript.sed input_file,这里myscript.sed即为支持sed命令的文件。
由于不接触初始化文件,如果想要保存改动内容,简单地将所有输出重定向到一个文件 即可。下面的例子重定向 sed命令的所有输出至文件‘ myoutfile’,当对结果很满意时使用这种方法。

sed 'some-sed-commands' input-file > myoutfile

sed浏览输入文件时,缺省从第一行开始,有两种方式定位文本:

  1. 使用行号,可以是一个简单数字,或是一个行号范围。
  2. 使用正则表达式。
x x为一行号,如1x , y 表示行号范围从x到y,如2,5表示从第2行到第5行 
/pattern/ 查询包含模式的行。例如/disk/或/[a-z]/ 
/pattern/pattern/ 查询包含两个模式的行。例如/disk/disks/
pattern/, x 在给定行号上查询包含模式的行。如/ribbon/,3
x, /pattern/ 通过行号和模式查询匹配行。3 ./vdu/
x,y! 查询不包含指定行号x和y的行。1 , 2!

sed编辑命令:

p 打印匹配行 
= 显示文件行号 
a\ 在定位行号后附加新文本信息 
i\ 在定位行号后插入新文本信息 
d 删除定位行 
c\ 用新文本替换定位文本
s 使用替换模式替换相应模式 
r 从另一个文件中读文本 
w 写文本到一个文件 
q 第一个模式匹配完成后推出或立即推出 
l 显示与八进制ASCII代码等价的控制字符 
{ } 在定位行执行的命令组 
n 从另一个文件中读文本下一行,并附加在下一行 
g 将模式2粘贴到/pattern n/ 
y 传送字符 
n 延续到下一输入行;允许跨行的模式匹配语句

sed识别任何基本正则表达式和模式及其行匹配规则。记住规则之一是:如果要定位一特殊字符,必须使用(\)屏蔽其特殊含义。
例:
使用P查询行号:

sed -n '1'p filename.txt  #查询单行
sed -n '1,2'p filename.txt #查询范围行(1-2)
sed -n '/auto/'p filename.txt #匹配单词进行查找。
sed -n '3,auto'p filename.txt #匹配行号和单词进行打印
sed -n '/\$/'p filename.txt 匹配元字符$使用、进行屏蔽 
sed -n '1,$'p filename.txt 打印完整文件内容

替换命令用替换模式替换指定模式,格式为:
[address [,address]] s/ pattern-to-find /replacement-pattern/[gpwn]
s选项通知sed这是一个替换操作,并查询 pattern - to - find,成功后用replace m ent - pattern替换它。 替换选项如下:
g 缺省情况下只替换第一次出现模式,使用g选项替换全局所有出现模式。
p 缺省sed将所有被替换行写入标准输出,加p选项将使-n选项无效。
-n 选项不打印输出结果。
w 文件名 使用此选项将输出定向到一个文件。
例:

sed 's/nginx/nginx2/' filename.txt 替换单词‘nginx’为‘nginx2’
sed 's/\$//' filename.txt 删除特殊字符$
sed 's/nginx/nginx2/g' 进行全局替换。

删除所有行首的0。使用^ 符号表示模式从行首开始,^0* 表示行首任意个0。模式 s/ ^0*//g设置替换部分为空,即为删除模式。
在这里插入图片描述

一些sed命令集:

‘s / \ . $ / / g’ 删除以句点结尾行 
‘-e /abcd/d’ 删除包含a b c d的行 
‘s / [ ] [ ] [ ] * / [ ] / g’ 删除一个以上空格,用一个空格代替 
‘s / ^ [ ] [ ] * / / g’ 删除行首空格 
‘s / \ . [ ] [ ] * / [ ] / g’ 删除句点后跟两个或更多空格,代之以一个空格 ‘/ ^ $ / d’ 删除空行 
‘s / ^ . / / g’ 删除第一个字符 
‘s /CO L \ ( . . . \ ) / / g’ 删除紧跟C O L的后三个字母 
‘s / ^ \ / / / g’ 从路径中删除第一个\ 
‘s / [ ] / [ ] / / g’ 删除所有空格并用t a b键替代 
‘S / ^ [ ] / / g’ 删除行首所有t a b键 
‘s / [ ] * / / g’ 删除所有t a b键

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值