Linux流编辑命令sed
2019-01-11 本文已影响2人
会飞的蜗牛07
参数介绍
-n
- 只打印经过sed特殊处理的那一行(或者动作);
-e
- 直接在命令列模式上进行sed的动作编辑;
-f filename
- 直接运行filename内的sed动作;
-r
- 支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)
-i
- 直接修改读取的文件内容,而不是输出到终端;
function:
a
- 下一行插入,a后面接字串,这些字串会在新的一行出现(目前的下一行);
i
- 下一行插入,i后面接字串,这些字串会在新的一行出现(目前的上一行);
c
- 取代,c的后面可以接字串,这些字串可以取代n1,n2
之间的行!
d
- 删除;
p
- 打印,通常会与参数sed -n
一起运行;
s
- 替换,例如1,20s/old/new/g
就是将1-20行中所有的old替换为new;
实例
指定行号操作
sed -n '1,3p' file # 指定行号打印
sed -i '3d' file # 指定行号删除
sed -i '2a ni hao' file # 指定行号后面增加
sed -i '2i ni hao' file # 指定行号前面增加
根据行内容操作
sed -n '/^5/ p' file # 匹配行内容打印,支持正则
sed -i '/^5/ d' file # 匹配行内容删除
sed -i '/开始标志/,/结束标志/{//!d}' file # 删除匹配行之间的内容
sed -i '/开始标志/,/结束标志/{//d}' file # 删除匹配行
sed -i '/开始标志/,/结束标志/d' file # 删除匹配行和匹配行之间的内容
sed -i '1,20s/待替换的字符串/替换字符串/g' file # 匹配行内容替换,可以指定行号范围
sed -i -e 's%^xxx.*%xxx=ddd%g' filename # 对file中的变量进行赋值
sed '^xxx=/!d;s/.*=//' filename # 获取file中变量的赋值
find . -name test.txt | xargs sed -i '$a\zzzzzz' # 在test.txt的最后一行添加字符串
命令行中含变量
sed -i "\$a$变量" file # 在file后面增加变量的内容,当不是变量时,不需要最前面的\
使用-f
参数
cat make_boot.log | sed -f del_make.sed > make_boot.log.1
sed脚本del_make.sed
的内容为
/GNU Make 3.81/,/PARTICULAR PURPOSE./d # 删除固定格式的内容
/This program built for x86_64-redhat-linux-gnu/d
/Updating goal targets..../d
/makefiles...$/d