sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法
sed命令行格式为:
sed [-nefri] ‘function’ 输入文本
常用的参数(nefer)
-n:安静模式 即只输出匹配到的内容
-f; 直接将sed的动作写到档案内
-e:直接在指令模式上进行 sed的动作和编辑
-r:支持正则表达语法
-i:直接修改读取的文件内容
function
a:新增
c:取代
d:删除
i:插入
p:列印
s:取代
Example
1 删除
1.1 nl /etc/passwd | sed ‘2,5d’
sed 的动作为‘2,5d’,那个d就是删除 因此2-5行就删除了
1.2 只删除第二行
nl /etc/passwd | sed ‘2d’
2d表示删除第二行
1.3 从指定行删除到末尾
nl /etc/passwd | sed ‘4,$d’
‘4,$d’表示从第二行删除到行尾
2 添加
2.1 nl /etc/passwd | sed ‘2a I like linux’
2.2 在指定行数的上一行添加内容
nl /etc/passwd | sed ‘4i I like linux’
a 是在指定行的下一行 i是在指定行的上一行
2.3 添加多行内容
nl /etc/passwd | sed ‘4a i like linux \
I like linux too’
每一行都必须加上反斜杠 表示输入未结束
3 以行为单位的输出与替换
3.1 将指定行的内容输出
nl /etc/passwd | sed -e ‘2,5p’
3.2 取代指定行内容
nl /etc/passwd | sed ‘2,5c NEW COPY’
c用指定的内容替换原内容
4 搜索即显示
4.1 搜索指定内容
nl /etc/passwd | sed ‘/root/p’
4.2 搜索并删除
nl /etc/passwd | sed ‘/root/d’
4.3 搜索并替换
nl /etc/passwd | sed ‘/root/{s/bash/GOOD/;p}’
将ip前面的部分予以删除
/sbin/ifconfig eth0 | grep ‘inet addr’ | sed ‘s/^.*addr://g’
4.4 多点编辑
一个sed 删除/etc/passwd 第三行到末尾 并把bash替换为 ScySky
nl /etc/passwd | sed -e ‘3,$d’ -e ‘s/bash/ScySky/’