sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据进行替换、删除、新增、选取等特定工作。
命令格式:
sed [OPTION]... {script-only-if-no-other-script} [input-file]...
常用选项:
-n, --quiet, --silent 取消自动打印空间
-e script, --expression=script 添加”脚本“到程序的运行列表
-f script-file, --file=script-file 添加”脚本文件“到程序的运行列表
--follow-symlinks 直接修改文件跟随软连接
-i[SUFFIX], --in-place[=SUFFIX] 直接修改文件[指定扩展名就备份文件]
--posix 关闭所有GNU扩展
-r, --regexp-extended 在脚本中扩展正则表达式
-s, --separate 将输入文件视为各个独立的文件而不是一个长的连续输入
-u, --unbuffered 从输入文件读取量少的数据,更频繁的刷新输出
--help 打印帮助并退出
--version 输出版本信息并退出
常用命令:
a 新增
c 取代
d 删除
i 插入
p 列印
s 取代
例子:
删除某行
[root@qingcheng-app3 lgp]# sed '1d' passwd //删除第一行
[root@qingcheng-app3 lgp]# sed '$d' passwd //删除最后一行
[root@qingcheng-app3 lgp]# sed '1,2d' passwd //删除第一行到第二行
[root@qingcheng-app3 lgp]# sed '3,$d' passwd //删除第三行到最后一行
显示某行
[root@qingcheng-app3 lgp]# sed -n '1p' passwd //显示第一行
[root@qingcheng-app3 lgp]# sed -n '$p' passwd //显示最后一行
[root@qingcheng-app3 lgp]# sed -n '1,2p' passwd //显示第一行到第二行
[root@qingcheng-app3 lgp]# sed -n '3,$p' passwd //显示第三行到最后一行
使用模式进行查询
[root@qingcheng-app3 lgp]# sed -n '/root/p' passwd //查询包括关键字ruby所在所有行
[root@qingcheng-app3 lgp]# sed -n '/\$/p' passwd //查询包括关键字$所在所有行,使用反斜线\屏蔽特殊含义
增加一行或多行字符串
[root@qingcheng-app3 lgp]# sed '1a test test test' passwd //第一行后增加字符串
root:x:0:0:root:/root:/bin/bash
test test test
[root@qingcheng-app3 lgp]# sed '1,3a test test test' passwd //第一行到第三行后都增加字符串
代替一行或多行
[root@qingcheng-app3 lgp]# sed '1c test' passwd //第一行代替为test
[root@qingcheng-app3 lgp]# sed '1,2c test' passwd //第一行到第三行代替为test
替换一行中的某一部分
[root@qingcheng-app3 lgp]# sed -n '/root/p' passwd|sed 's/root/test/g' //替换root为test
[root@qingcheng-app3 lgp]# sed -n '/root/p' passwd|sed 's/root//g' //删除root
插入
[root@qingcheng-app3 lgp]# sed -i '$a bye' passwd //在文件最后一行插入 ”bye"
删除匹配行
[root@qingcheng-app3 lgp]# sed -i '/root/d' passwd //删除root的行