sed命令使用形式
1.sed命令从管道中读取数据处理
command | sed ‘ edit command‘ 通过管道把一个命令的标准输出读入到sed的标准输入,sed就起到了过滤作用
2.sed命令通过命令行参数从文件中读取数据
sed [-nief等参数] ‘edit command‘ filename
-n表示显示所在的行 ,-e可以实现多个行为 , -f表示指定文件 ,-i直接修改文件
edit command 的命令形式为:
/pattern/action
/pattern/为一个正则表达式 / / 两个反斜杠表示正则表达式 ^ 开始$结束
action 表示对正则表达式的操作指定。
p 打印行print
s 替换 s/part1/part2/g g表示全局替换
d 删除delete ‘d’ 这个字符就是删除的动作了,不仅可以删除指定的单行以及多行,而且还可以删除匹配某个字符的行,另外还可以删除从某一行一直到文档末行。
= 显示行号
sed命令不会改变提供数据的原始文件,它只对流进过它的数据进行修改,输出的标准输出,如果需要保存文件,则要重定向到临时文件中在覆盖原来文件。
sed -n -e ‘/^root/p‘ -e ‘/^yuan/p‘ /etc/passwd
1.打印匹配的行
打印第10行的类容
sed -n ‘10‘p /etc/passwd
-n表示打印行数
p表示打印
‘10‘p后面接p不允许空格 p也可以写到‘10p‘里面
2.打印匹配范围
打印所有行
sed -n ‘1,$‘p /etc/passwd
打印1-5行类容
sed -n ‘1,$‘p /etc/passwd
3.打印匹配模式
/pattern/
打印包含root的行
sed -n ‘/root/p‘ /etc/passwd
4 实现多个行为
sed -n -e ‘/^root/p‘ -e ‘/^yuan/p‘ /etc/passwd
5.删除某行或者多行或者某个元素行
sed ‘1‘d /etc/passwd
sed ‘ 1,5‘d /etc/passwd
sed ‘/yuan/‘d /etc/passwd
匹配元字符 $前,必须使用反斜线 \屏蔽其特殊含义。模式为 /\$/ p 。
如:
sed -n ‘ / \$ / ‘ /etc/passwd
6.替换字符或字符串
sed ‘1,4s/ abc/ABC/g‘ /etc/passwd
sed ‘1,4s @[email protected]@g‘ /etc/passwd
sed ‘1,4s#abc#ABC#g‘ /etc/passwd
表示把/etc/passwd文件中的1-4行的abc全部替换为ABC
上例中的 ‘s’ 就是替换的命令, ‘g’ 为本行中全局替换,如果不加 ‘g’ 只换该行中出现的第一个。
除了可以使用 ‘/’ 作为分隔符外,还可以使用其他特殊字符例如 ‘#’ 或者 ‘@’ 都没有问题。
7.调换两个字符串的位置
替换命令用替换模式替换指定模式,格式为:
[ a d d r e s s [ , address]] s/ pattern-to-find /replacement-pattern/[g p w n]
sed ‘1,[email protected]\(rot\) \(.*\)\(bash\)@\3\2\[email protected]‘g /root/test.txt
8.在行的前面或者后面贴加字符
sed ‘s /^.*$ / 222&/ ‘g /root/12.txt
9.直接修改文件的内容
sed -i ‘s/ot/to/g‘ test.txt