文章来源:王琦的个人博客-Linux sed基本用法 ,互联网打杂,喜欢多语言编程,记录一些知识碎片,分享一些心得。
linux三剑客之sed,实现数据的替换,删除,增加,选取等(以行为单位进行处理)
sed 常用参数
-n
:取消默认输出 一般与-p一起使用-i
:直接修改文件内容-r
:使用正则
取行
# sed -n '/匹配的内容/p' 过滤出指定内容的行
# 取出指定行
sed -n '20p'|'20p,30p' # 取出文件第几行
sed -n '/php/,/^linux/p' # 取出包含php,linux的行
sed -rn '/php|linux/p' # 正则查找包含php或linux的行
sed -n '1p;2p;3p' # 取出1,2,3行
# 过滤空行的几种方法
grep -v '^$' file
sed '/^$/d' file
sed -n /'^$/!p' file
awk '!/^$/' file
增加
sed '3i content' file # 指定行前面增加内容
sed '3a content' file # 后面增加内容
sed '$a content\ncontent1' # 最后一行增加,多行加上\n
sed -n '$p' file # 显示最后1行,$p表示最后一行
其他命令:cat echo>>
删除
# 删除
# ^$ 表示空行
# /要匹配的内容/ d表示删除,sed后不加参数默认输出执行后果的内容。
sed '/^$/d' file # 删除空行
sed '$d' file # 删除最后一行
sed '1d' file # 删除第一行
sed '/php/d' file # 删除带有php的行
sed '1,4d' file # 删除1-4行
替换
sed -i 's#要查找的内容#替换的内容#g' file
# 获取网卡信息 取出第二行 替换内容
ifconfig eth0 | sed -n '2p'|sed 's#inet#ip#g'
# 简写方式:2表示去第几行后面是替换命令
...| sed -n '2s#inet#ip#g'
# 取出网卡ip
ifconfig eth0|sed -rn '2s#^.*dr:(.*) Bc.*$#\1#gp'