sed简介:
文本处理三剑客之一的sed
sed是一种行编辑器,它一次处理一行内容,本身是一个管道命令,对行的数据进行 替换 增加 删除 选取的工作
sed的命令为:sed[opition] ‘script’ inputfile…
‘地址命令’
常用的选项:
-n 不输出模式空间内容到屏幕
-e 多点编辑
-r 支持使用扩展正则表达式
-i.bak 备份文件并原处编辑
常用命令:
a ∶ 新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)
c ∶ 取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行
d ∶ 删除,因为是删除,所以 d 后面通常不接任何内容
i ∶ 插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行)
p∶ 列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起用
s∶ 取代,可以直接进行替换的工作。通常这个 s 的动作可以搭配正则表达式。
地址定界:
1.(1) 不给地址:对全文进行处理
(2) 单地址:
#: 指定的行
/pattern/ :被此处模式所能够匹配到的每一行
(3) 地址范围:
#,#
#,+#
/pat1/,/pat2/
#,/pat1/
(4) ~ :步进
1~2 奇数行
2~2 偶数行
编辑命令:
d: 删除模式空间匹配的行
p: 显示模式空间中的内容
a [\]text :在指定行 后面 追加文本
支持 使用\n 实现多行追加
i [\]text :在行前面 插入文本
c [\]text :替换行为单行或多行文本
w /path/somefile: 保存模式匹配的行至指定文件
r /path/somefile :读取指定文件的文本至 模式空间中
匹配 到的行后
=: 为模式空间中的行打印行号
!: 模式空间中匹配行取反处理
sed工具
s/// :查找替换, 支持使用其它分隔符,s@@@ ,s###
替换标记:
g: 行内全局替换
p: 显示替换成功的行
w /PATH/TO/SOMEFILE :将替换成功的 行 保存至文件中
如果没有定址,sed将对全文进行处理
举例:[本次我们有一个文件f1] 定义了五行内容
如:只显示第三行 sed -n ‘3p’ f1
只看文件第1行和第3行之间的文件
删除第1行的文件
a与i 比较相似i是前插a是后加:
而且还有三个取它们它们分别代表不同的意思:
c :整行替换或文本
g:全局替换
s:可跟正则表达式
其次sed工具还有些高级编辑命令:
h: 把模式空间中的内容覆盖至保持空间中
H :把模式空间中的内容追加至保持空间中
g: 从保持空间取出数据覆盖至模式空间
G :从保持空间取出内容追加至模式空间
x: 把模式空间中的内容与保持空间中的内容进行互换
n: 读取匹配到的行的下一行 覆盖 至模式空间
N :读取匹配到的行的下一行 追加 至模式空间
d: 删除模式空间中的行
D :删除 当前模式空间开端至\n 的内容( 不再传 至标准输
出),放弃之后的命令,但是对剩余模式空间重新执行sed
sed -n ‘n;p’ FILE
sed ‘1!G;h;$!d’ FI LE
sed ‘N;D‘ FILE
sed ‘$!N;$!D’ FILE
sed ‘$!d’ FILE
sed ‘G’ FILE
sed ‘g’ FILE
sed ‘/^$/d;G’ FILE
sed ‘n;d’ FILE
sed -n ‘1!G;h;$p’ FILE
原创文章,作者:gd1479,如若转载,请注明出处:http://www.178linux.com/78447