您的位置:首页 > 运维架构 > Shell

利用sed命令行进行增删改查

2018-06-07 10:09 330 查看

sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;非交互式编译文件

语法:
sed [options] '[command]' [filename]
options:
-n 抑制自动(默认的) 输出(全部打印) 读取下一个输入行, -n 要读取的行号
-e 执行多个sed指令
-f 运行脚本
-i 编辑文件内容
-i.bak 编辑的同事创造.bak的备份
-r 使用扩展的正则表达式

command:
a 在匹配后追加
i 在匹配后插入
p 打印
d 删除
r/R 读取文件/一行
w 另存
s 查找
c 替换
y 替换
h/H 复制拷贝/追加模式空间(缓存区)到存放空间
g/G 粘贴 从存放空间取回/追加到模式空间
x 两个空间内容的交换
n/N 拷贝/追加下一行内容到当前
D 删除\n之前的内容
P 打印\n之前的内容
b 无条件跳转
t 满足匹配后的跳转
T 不满足匹配时跳转

例子:
cp /etc/passwd . 拷贝一份passwd文件到当前家目录
sed '3p' passwd 不加-n时,将第3行内容打印一次并再次将整个文件内容打印
sed -n '3p' passwd 打印第3行内容
sed -n '1,3n' passwd 打印前3行内容
sed -n '1,3!p' passwd 打印文件除前3行之外的全部内容
sed -n '3,+3p' passwd 打印机第三行之后的三行

sed '1i ###############' passwd 在第一行插入###########内容并打印出来
sed '$a @@@' passwd 在末尾追加@@@内容并打印出来
sed '3c $$$' passwd 将第三行替换成¥¥¥

兄弟连教学视频总结了一下sed命令的使用
sed [选项] '[动作]' 文件名
选项:
-n:一般sed命令会把所有数据都输出到屏幕,如果加入此选择,则会把经过sed命令处理的行输出到屏幕

-e:允许对输入数据应用多条sed命令编辑

-i:用sed的修改结果直接修改读取数据达的文件,而不是由屏幕输出

动作:
a\:追加,在当前行后添加一行或多行。添加多行时,除最后一行外,每行末尾需要用“\”代表数据未完结。
c\:行替换,用c后面的字符串替换原数据行,替换多行时,除最后一行外,每行末尾需要用“\”代表数据未完结。
i\:插入,在当期行前插入一行或多行。插入多行时,除最后一行外,每行末尾需要用“\”代表数据未完结。
d:删除,删除指定的行
p:打印,输出指定的行
s:字符串替换,用一个字符串替换另外一个字符串。格式为“行范围s/旧字符串/新字符串/g”(和vim中的替换格式相似)。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shell 脚本 sed