当前位置:首页 > Liunx

shell三剑客之sed-06

邓鹏3年前 (2024-01-13)Liunx924

学习sed的关键是要搞清楚,它是一个==编辑器==,编辑器常见的功能有:

  • 删除

  • 打印

  • 增加

  • 替换(修改)

sed参数
-e 进行多项编辑,即对输入行应用多条sed命令时使用
-n 取消默认的输出
-r 使用扩展正则表达式
-i inplace,原地编辑(修改源文件)

sed操作
d 删除行
p 打印行
a 后面加行
i 前面加行
s 替换修改

#示例演练,指定删除第2行
# head  -5 /etc/passwd |cat -n |sed  2d

变量引用需要双引号
a=2					
head -5 /etc/passwd |cat -n |sed "$a"d	

删除第2行到第3行,中间的逗号表示范围
head -5 /etc/passwd |cat -n |sed  2,3d

删除第1行和第5行,中间为分号,表示单独的操作
head -5 /etc/passwd |cat -n |sed '1d;5d'

删除第1,2,4行, -e参数是把不同的多种操作可以衔接起来
head -5 /etc/passwd |cat -n |sed -e '2d;4d' -e '1d'


删除正则匹配到的行
head -n 5 /etc/passwd |cat -n |sed  '/oo/d'

删除以root开头的行
head -n 5 /etc/passwd |sed '/^root/d'

删除以bash结尾的行
head -n 5 /etc/passwd |sed '/bash$/d'

#使用i直接操作源文件修改,建议先不加参数进行修改,修改完没问题后,再加i参数进行源文件进行修改
#`sed -i`删除/etc/vsftpd/vsftpd.conf里所有的注释和空行
sed -i '/^#/d;/^$/d' /etc/vsftpd/vsftpd.conf

`sed -i`删除/etc/samba/smb.conf里所有的注释和空行
sed -i '/#/d;/;/d;/^$/d;/^\t$/d' /etc/samba/smb.conf

#打印行操作,打印第一行
head  -5 /etc/passwd |cat -n | sed  1p
     1  root:x:0:0:root:/root:/bin/bash				# 会在原来5行的基础上再打印第1行
     1  root:x:0:0:root:/root:/bin/bash
     2  bin:x:1:1:bin:/bin:/sbin/nologin
     3  daemon:x:2:2:daemon:/sbin:/sbin/nologin
     4  adm:x:3:4:adm:/var/adm:/sbin/nologin
     5  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

head  -5 /etc/passwd |cat -n | sed -n 1p			# 正确做法加一个-n参数
     1  root:x:0:0:root:/root:/bin/bash

打印第一行和第四行
head  -5 /etc/passwd |sed -ne '1p;4p'

打印~4行
head  -5 /etc/passwd |sed -ne '1,4p'

打印正则匹配到的行,打印有root关键字的行
head -5 /etc/passwd |sed -n '/root/p'


#增加行操作
sed -i '2a33333' 1.txt    #在文本1.txt文本第2行后增加33333这一行,其中2a代表插入到第二行后 ,如果第一行插入请把2a改成li 

也可以使用正则匹配到的行后面增加一行。
sed -i '/^4/accccc' 1.txt     #表示在4开头的行的后一行加上ccccc这一行


#修改替换操作
替换每行里的第1个匹配字符
head  -5 /etc/passwd |sed 's/:/===/'    #如果要替换每一行所有匹配的,请后面加g   head  -5 /etc/passwd |sed 's/:/===/g'
root===x:0:0:root:/root:/bin/bash
bin===x:1:1:bin:/bin:/sbin/nologin
daemon===x:2:2:daemon:/sbin:/sbin/nologin
adm===x:3:4:adm:/var/adm:/sbin/nologin
lp===x:4:7:lp:/var/spool/lpd:/sbin/nologin

替换2~4行
head  -5 /etc/passwd |sed '2,4s/:/===/g'

替换2行和4行
head  -5 /etc/passwd |sed '2s/:/===/g;4s/:/===/g'

注意后面的数字是2,前面替换了1个,剩下的里面替换第2个也就是原来的第3个
head  -5 /etc/passwd |sed '2s/:/===/;2s/:/===/2'
root:x:0:0:root:/root:/bin/bash
bin===x:1===1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin


#使用正则匹配替换
替换以daemon开头的那一行
head -5 /etc/passwd |sed '/^daemon/s/:/===/g'
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon===x===2===2===daemon===/sbin===/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin


扫描二维码推送至手机访问

版权声明:本文由PowerShell中文社区发布,如需转载请注明出处。

本文链接:https://www.powershell.com.cn/?id=33

“shell三剑客之sed-06” 的相关文章

Shell脚本介绍

Shell脚本介绍

今日目标==熟练掌握shell变量的定义和获取====能够进行shell简单的四则运算==磁盘相关命令回顾:磁盘相关命令说明fdisk分msdos分区与要看系统硬盘与分区情况lsblk查看块设备与其挂载情况df -h查看已经挂载的文件系统情况mount也是查看挂载的情况,还能看到挂载的参数(ro或r…

CentOS运维全套常用命令详解

CentOS运维全套常用命令详解

CentOS是企业服务器主流Linux发行版,本文整理运维高频操作命令,覆盖系统信息、磁盘、网络、进程、软件包、权限、日志、防火墙等场景,每条附带参数说明,可直接复制用于服务器操作。一、系统信息查看命令1、系统版本与内核# 查看系统发行版本 cat /etc/centos-re…

CentOS 7 标准系统安装完整实操教程

CentOS 7 标准系统安装完整实操教程

摘要:本文为标准化CentOS服务器安装运维文档,兼容物理服务器、VMware虚拟机、KVM虚拟化环境,采用生产通用最小化安装规范。全文包含镜像准备、引导安装、磁盘分区规划、网络配置、账号设置、系统初始化与运维注意事项,可作为企业服务器标准化部署参考手册。目录(页面锚点可跳转)一、前言二、安装前期准…

CentOS7 添加新磁盘完整实战教程

CentOS7 添加新磁盘完整实战教程

摘要:本文为CentOS7生产服务器新增磁盘完整实操指南,包含磁盘识别、分区创建、LVM逻辑卷扩容、裸盘直接挂载两种主流方案,附带全程可复制命令,区分测试环境与生产环境操作风险,解决服务器扩容硬盘、挂载新数据盘常见问题,适合运维工程师线上扩容落地使用。目录(页面锚点可跳转)一、前言二、安装前期准备三…

CentOS7 系统软件安装实战|yum 本地源、rpm 离线、源码编译三种方式完整教程

CentOS7 系统软件安装实战|yum 本地源、rpm 离线、源码编译三种方式完整教程

摘要:本文为CentOS7软件安装完整实战教程,覆盖运维最常用3种安装方式:yum在线仓库安装、RPM包离线安装、源码编译安装,附带依赖缺失报错解决、yum本地离线源制作、rpm强制卸载、编译前置依赖等生产场景操作命令,区分服务器在线/离线环境,适合企业运维标准化部署软件使用。目录(页面锚点跳转)一…

CentOS7虚拟机安装VMware Tools完整实操

CentOS7虚拟机安装VMware Tools完整实操

摘要:本文为CentOS7虚拟机安装VMware Tools完整实操文档,包含官方推荐open-vm-tools(yum在线安装)、传统ISO镜像编译安装两种方案,覆盖鼠标无缝切换、剪贴板互通、共享文件夹、时间同步功能配置,附带常见报错排查,适配VMware Workstation与vSphere虚…

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。