Linux从入门到放弃 三剑客 --- sed命令详解

sed

  1. 概念:
    文件处理编辑命令
    过滤、替换(修改)、增删改查
    /舞台/
    字符必须加//舞台,数字最好也加上

  2. 说明:
    擅长对文件信息进行编辑
    擅长对行进行操作

  3. 原理:
    按照每行查找信息,找出符合条件的信息。
    处理信息会在模式空间(内存)中完成,差找出信息后执行指令
    找什么东西,做什么事情

  4. 语法:
    sed [参数] ‘查找内容 指令’ 文件

  5. 参数:

-p
	打印
-n
	取消默认输出
	sed '7p' sed_test.txt -n
		查找第7行信息打印
	sed '1,7p' sed_test.txt -n
		查找第1行至第7行信息打印(查找连续行信息)
	sed '7,$p' sed_test.txt -n
		查找第7行至尾行信息打印
		$:最后一行
	sed '2p;4p' sed_test.txt -n
		查找2和4行信息打印(查找不连续行信息)

-r
	识别扩展正则
	sed '/wy|dyp/p' sed_test.txt -nr
		查找出含有wy和dyp的行

-i
	修改文件内容
	-i.bak
		后边跟字符,删除前备份
ps:-i后不能跟其他参数,可以加在前边
	-i不要和-n一起使用
	sed '7d' sed_test.txtt -i
		删除第7行
	sed '7d' sed_test.txt -i.bak
		删除第7行并备份sed_test.txt.bak

-e
	可以执行多条命令
	sed '3ad\ny\np' sed_test.txt -i
		添加多行
	sed -e '1iw' -e '7ay' sed_test.txt -i
		在第1行前插入w,在第7行后插入y。
  1. 指令

查看

p
	输出显示指定信息
	sed '7p' sed_test.txt -n
		显示第7行信息

删除(delete)

d
	删除指定信息
	sed '7d' sed_test.txt -i
		清除第7行信息

增加

a(append)
	添加指定信息在相应行的后面
sed '7awy' sed_test.txt -i
	在第7行后插入wy

i(insert)
	插入指定信息在相应行的前面
sed '7awy' sed_test.txt -i
	在第7行前插入wy

c(replace)
	将一行信息进行替换修改
	sed '7cwy' sed_test.txt -i
		将第7行信息替换为wy

修改

s###g

s
	替换指定信息
g
	全局替换信息
	sed 's#wy#dyp#g' sed_test.txt
		将wy替换为dyp

后项引用前项

	echo "wy" | sed 's#(.*)#<\1>#g' -r
		输出wy,.*匹配echo输出的wy,再用\1引用()匹配的wy,最后替换为<wy>。
	echo "wy" | sed 's#(.)(.)#<\1><\2>#g' -r
		输出wy,第一个.匹配一个字符w,第二个.匹配一个字符y,再\1引用第一个(),\2引用第二个()
  1. 练习

获取网卡eth0的IP地址

ip a s | sed "3p" -n | sed 's#(^.*t)(.*)(/.*$)#\2#g' -r
	-r
		识别正则符号
第一步:查看网卡

第二步:提取第3行

第三步:	将任意开头t结尾为第一引用点,
		再从t后匹配任意字符为第二引用点,
		再以/开头任意结尾为第三引用点,
		最后提取第二引用点的信息就是IP了。

  1. 实例
sed '3p' wy.txt -n
查找第三行信息打印
	-p	打印
sed '2,4p' wy.txt -n
查找2至4行信息打印(查找连续行信息)
sed '2,$p' wy.txt -n
查找2至尾行信息打印
$:最后一行
sed '2p;4p' wy.txt -n
查找2和4行信息打印(查找不连续信息)
sed '/wy/p' wy.txt
查找wy信息打印
sed '7d' wy.txt -i
sed '7d' wy.txt -i.bak
7:行数
d:删除
-i:修改文件内容
	后边跟字符,删除前备份
ps:-i后不能跟其他参数,可以加在前边
	-i尽量不和-n一起使用
sed '3ad\ny\np' wy.txt -i
添加多行
sed -e '2iw' -e '3ay' wy.txt -i
-e:可以执行多条命令
sed ‘7c wy’ wy.txt
将第7行清除,写入wy
c:替换整行
ip a s eth0|sed -nr '3s#^.*et (.*)/24.*$#\1#gp'
	-n:取消默认输出
	-r:使用扩展正则
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值