sed

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
上一篇 下一篇

猜你喜欢

热点阅读