shell脚本--sed命令基础

在Linux中,sed命令可基于模式匹配过滤及修改文本文件,采用非交互式逐行处理;可实现对文本的增、删、改、查等操作。
sed命令语法格式:

	前置命令 | sed  [选项]  '条件指令'
	sed  [选项]  '条件指令'  文件

sed命令常用选项:

	-n:屏蔽默认输出,默认sed会输出读取文档的全部内容
	-r:让sed支持扩展正则(不使用-r选项,sed支持基本正则)
	-i:sed直接修改源文件,默sed只是通过内存临时修改文件,源文件无影响

sed条件指令:

	p:打印行,通常与选项 -n 结合使用;
	d:删除行
	s:替换匹配的字符
	a:新增行,在指定的行之后追加文本
	i:在指定的行之前插入文本
	c:替换指定的行

sed命令条件指令p

# sed  -n 'p' /etc/passwd  //输出所有行,等同于cat /etc/passwd
# sed  -n '4p' /etc/passwd  //输出第4行
# sed  -n '4,10p' /etc/passwd  //输出第4~10行
# sed  -n '4p;10p' /etc/passwd  //输出第4行和第10行
# sed  -n '4,+10p' /etc/passwd //输出第4行及其后的10行内容
# sed  -n '/^bin/p' /etc/passwd //输出以bin开头的行
# sed  -n '$=' /etc/passwd   //输出文件的行数,$最后一行的行号
# sed  -n '/bin/ =' /etc/passwd  //输出所有包含bin的行号

sed命令条件指令d(复制/etc/passwd到/root目录下,避免错误参数系统文件)

 # sed -i '4,10d'  /root/passwd   //删除第3~10行
 # sed -i '/nologin/d'  /root/passwd  //删除所有包含nologin的行
 # sed -i '/nologin/!d'  /root/passwd //删除不包含nologin的行,! 符号表示取反
 # sed -i '/^root/d'  /root/passwd //删除以root开头的行
 # sed -i '$d'  /root/passwd   //删除文件的最后一行,$表示最后一行
 # sed -i '/^$/d'  /root/passwd  //删除所有空行
 # sed -i 'd'  /root/passwd   //删除所有行,即清空文件

sed命令条件指令s sed -i ‘s/旧内容/新内容/选项’ 文件
新建一个文件来测试条件指令s;仅做演示时,可不用 -i 选项

# vim seds.txt
abc	abc	abc
qwe	abc	qwe
abc	qwe	abc	
# sed 's/abc/2019/'   seds.txt //将每行中第一个abc替换为2019
# sed 's/abc/2019/3'  seds.txt  //将每行中的第3个abc替换为2019
# sed 's/qwe/2019/g'  seds.txt  //将所有的qwe都替换为qwe
# sed 's/qwe//g'	seds.txt  //将所有的qwe都替换为空,即删除所有的qwe

sed修改配置文件

# sed -i 's/nologin//g'     /root/passwd  //将所有的nologin都删除(替换为空串)
# sed '4,10s/^/#/'   /root/passwd  //在第4~10行首字符前添加#号,即注释第4~10行
# sed -i "/^#anon/s/^#//" /etc/vsftpd/vsftpd.conf    //修改服务配置,删除注释,开启匿名上传

替换操作的分隔“/”可改用其他字符,如#、&等,便于修改文件路径

# sed -i 's#/bin/bash#/sbin/sh#g'  /root/passwd   //将/bin/bash替换为/sbin/sh

sed结合正则,实现字符位置的替换
( \ )()括起来的被保存下来,粘贴时用数字表示保存的第几个,括号内的内容复制下来,用 \数字 粘贴,如 \3\2\1

# sed -r -i 's/^(.)(.*)(.)$/\3\2\1/' seds.txt	#将文件中每行的第一个、倒数第1个字符互换
# sed 's/.//3 ; s/.$//' seds.tx	#删除文件中每行的第三个、最后一个字符
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值