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'