sed常用操作命令

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的行
原文地址:https://www.cnblogs.com/kangfeng/p/8268952.html