sed命令

sed简介

sed 是一种新型的,非交互式的编辑器。它能执行与编辑器 vi 和 ex 相同的编辑任务。sed 编辑器没有提供交互式使用方式,使用者只能在命令行输入编辑命令、指定文件名,然后在屏幕上查看输出。sed 编辑器没有破坏性,它不会修改文件,除非使用 shell 重定向来保存输出结果。默认情况下,所有的输出行都被打印到屏幕上。

sed 工作过程

sed 编辑器逐行处理文件(或输入),并将输出结果发送到屏幕。sed 的命令就是在 vi和 ed/ex 编辑器中见到的那些。sed 把当前正在处理的行保存在一个临时缓存区中,这个缓存区称为模式空间或临时缓冲。sed 处理完模式空间中的行后(即在该行上执行 sed 命令后),就把该行发送到屏幕上(除非之前有命令删除这一行或取消打印操作)。sed 每处理完输入文件的最后一行后,sed 便结束运行。sed 把每一行都存在临时缓存区中,对这个副本进行编辑,所以不会修改或破坏源文件。如图 1:sed 处理过程。
在这里插入图片描述
从上图可以看出 sed 不是破坏性的,它不会修改正在编辑的文件。

sed 的基本语法

sed [-hnV][-e'script'][-f script文件][文本文件]

参数说明:
-h或–help 显示帮助; -n或- -quiet或–silent 仅显示script处理后的结果; -V或- -version 显示版本信息。
-e ‘script’]或- -expression=’script’ 以选项中指定的script来处理输入的文本文件。-e可以省略,用’’标注script就可以了.
-f script文件或- -file=script文件 以选项中指定的script文件来处理输入的文本文件。-f也可以省略, 直接给出文件名称就可以.
但是! 用sed选项-e将改动直接修改到源文件是非常危险的, 可以采用重定向的方式保存sed的输出,例如:

sed 'some-sed-commands' input_file>output_file

常用选项:
-n 使用安静模式,在一般情况所有的 STDIN 都会输出到屏幕上,加入-n 后只打印被 sed 特殊处理的行
-e 多重编辑,且命令顺序会影响结果
-f 指定一个 sed 脚本文件到命令行执行,
-r Sed 使用扩展正则
-i 直接修改文档读取的内容,不在屏幕上输出

一 、删除命令

1.删除指定行

sed ‘1d’ 文件名

解释:这里可以把1换成任意行,然后删除任意指定的行,

2.删除指定范围内行

sed ‘1,5d’ 文件名

3.删除指定行以外其他行

sed ‘3!d’ 文件名

4.删除最后一行

sed ‘$d’ 文件名

5.删除空行
sed ‘/^$/d’ 文件名

二 、 查找替换命令
1.替换每一行第一个匹配到的字符串
sed ‘s/lalala/LALALA’ 文件名

2.替换每一行匹配到最多出现2次的字符串
sed ‘s/lalala/LALALA/2’ 文件名

3.替换每行所有匹配到的字符串
sed ‘s/lalala/LALALA/g’ 文件名

4.只替换开头匹配到的字符串
sed ‘s/^lalala/LALALA/’ 文件名

三 、字符转换命令
1.将123替换成ABC
sed ‘y/123/ABC/’ 文件名

这里不是将123替换成ABC,而是将1替换成A,2替换成B,3替换成C

四 、插入命令

1.在某一行前插入文本
sed ‘2 i lalala’ 文件名

2.在某一行后插入文本
sed ‘2 a lalala’ 文件名

3.在匹配行的上一行插入文本
sed ‘/lalala/i\LALALA’ 文件名

五 、读入文本命令

1.将某文本内容读取后插入到匹配行之后
sed ‘/^$/r etc/passwd’ 文件名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值