Shell脚本工具三剑客 Sed

本文详细介绍了Linux系统中的sed工具,包括其工作流程、命令格式和常见用途,如打印、删除、插入内容以及搜索替换。通过实例解析,帮助读者掌握如何利用sed进行文本处理和流编辑。
摘要由CSDN通过智能技术生成

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

一、sed工具的概述

sed是一种流编辑器流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流

sed编辑器可以根据命令来处理数据流中的数据 这些命令要么从命令行中输入要么存储在一个
命令文本文件中

二、sed工作流程

sed的工作流程主要就是读取 执行 显示 三种
读取:sed从输入流(文件、管道、标准输入)中读取一行内容并存储到临时的缓冲区中(又称模式空间,pattern space )。
执行:默认情况下,所有的sed 命令都在模式空间中顺序地执行, 除非指定了行的地址,否则sed命令将会在所有的行上依次执行
显示:发送修改后的内容到输出流(屏幕)。在发送数据后,模式空间将会被清空。在所有的文件内容都被处理完成之前,上.述过程将重复执行,直至所有内容被处理完。

三、sed的命令格式

在这里插入图片描述

1.常用选项

-h 或- -help∶显示帮助。
-r:使用扩展正则表达式
-i∶ 备份文件文件并原处编辑
-e 或 - -expression=∶ 多点编辑
-f 或- -file=∶表示用指定的脚本文件来处理输入的文本文件。
-n∶ 不输出模式空间内容到屏幕,即不自动打印,加p,又恢复自动打印

2.常用操作

s∶替换,替换指定字符。
d∶删除,删除选定的行。
c∶ 替换,将选定行替换为指定内容。
a∶ 增加,在当前行下面增加一行指定内容。
i∶ 插入,在选定行上面插入一行指定内容。
Y∶ 字符转换,转换前后的字符长度必须相同。
p∶ 打印,如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容; 如果有非打印字符,则以 AscII码输出。其通常与_n"选项一起使用。
=∶打印行号。
l(小写L)∶打印数据流中的文本和不可打印的ASCII字符(比如结束符s、制表符\t)

四、sed命令的使用

1.打印内容

打印全部内容

sed ‘ ’交互模式输入一行,自动打印一行相同的
sed -n ‘ ’ 交互模式输入一行,关闭自动打印
sed -n ‘ p’加上p又恢复自动打印

[root@yxp opt]#sed ' '
11
11
22
22
33
33
44
44
[root@yxp opt]#sed -n ' '
11
22
33
[root@yxp opt]#sed -n ' p'
11
11
22
22
33
33

查看文件,打印全部内容

#法一:
[root@yxp opt]#sed ' ' /etc/fstab 
 
#
# /etc/fstab
# Created by anaconda on Sat Sep  4 02:48:23 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=183ca7c7-1989-4f43-9e81-d2676192f5a4 /boot                   xfs     defaults        0 0
/dev/mapper/centos-home /home                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
/dev/sdb1 /mnt xfs defaults 0 0
 
#法二
[root@yxp opt]#sed -n ' p' /etc/fstab 
 
#
# /etc/fstab
# Created by anaconda on Sat Sep  4 02:48:23 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=183ca7c7-1989-4f43-9e81-d2676192f5a4 /boot                   xfs     defaults        0 0
/dev/mapper/centos-home /home                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
/dev/sdb1 /mnt xfs defaults 0 0

打印指定行内容

##例如:打印第四行内容
[root@yxp opt]#sed -n ' 4p' /etc/fstab 
# Created by anaconda on Sat Sep  4 02:48:23 2021
 
[root@yxp opt]#ifconfig ens33|sed -n '2p'
        inet 192.168.59.102  netmask 255.255.255.0  broadcast 192.168.59.255

根据地址,打印指定多行内容

#打印2-4[root@yxp opt]#ifconfig ens33|sed -n '2,4p'
        inet 192.168.59.102  netmask 255.255.255.0  broadcast 192.168.59.255
        inet6 fe80::ecee:9f8a:52de:5871  prefixlen 64  scopeid 0x20<link>
        ether 00:0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值