Shell编程:文本处理器(sed应用实例)



应用实例

提取版本号

使用 sed 结合正则表达式提取指定文件中版本号信息。

示例

  1. 使用 grep 命令提取包含数字和点号的行:

    grep -E "[0-9]+\." 1.txt
    

    示例输出:

    ant-1.9.7.jar
    ant-launcher-1.9.7.jar
    antlr-2.7.7.jar
    antlr-runtime-3.4.jar
    aopalliance-1.0.jar
    archaius-core-0.7.6.jar
    asm-5.0.4.jar
    aspectjweaver-1.9.5.jar
    
  2. 使用 sed 命令提取版本号:

    完整版替换,将每行的 -.jar 替换掉:

    cat 1.txt | sed -r 's/(.*)-(.*)(\.jar)/\1\2\3/'
    

    取消 - 前面的内容,只保留 - 后的内容:

    cat 1.txt | sed -r 's/.*-(.*)(\.jar)/\1\2/'
    

    只提取版本号:

    cat 1.txt | sed -r 's/.*-(.*)\.jar/\1/'
    

    结果输出:

    1.9.7
    1.9.7
    2.7.7
    3.4
    1.0
    0.7.6
    5.0.4
    1.9.5
    

    说明r 选项表示引用扩展正则,(.*) 表示 “-” 前面的所有内容,第二个 (.*) 表示 “-” 后的内容直到 .jar

查看指定时间内的日志

使用 sed 命令查看指定时间范围内的日志。

sed -n '/Mar 23 21:00:01/,/Mar 23 21:30:01/p' /var/log/messages

注意:开头的时间格式要一致,否则无法正确匹配。

输出示例:

Mar 23 21:00:01 localhost systemd: Started Session 70 of user root.

修改网卡的IP地址

使用 sed 命令修改网卡配置文件中的 IP 地址:

sed -i '/IPADDR=192.168.233.21/c IPADDR=10.10.10.10' ifcfg-ens33

查看结果:

cat ifcfg-ens33
TYPE=Ethernet
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.10.10.10
NETMASK=255.255.255.0
GATEWAY=192.168.233.2
DNS1=192.168.233.2

注意: 在使用 sedy 命令时,两边的字符串长度必须相等。如果不相等,会报错。

sed 中的 y 命令是逐字符替换,它会将左侧字符串的每个字符替换为右侧字符串的对应字符。

例如,y/abc/123/ 会将 a 替换为 1b 替换为 2c 替换为 3。两边字符串长度不同会导致 sed 无法确定该如何替换,因而报错。

# 错误示例:逐字符替换,报错
sed -i 'y/10.10.10.10/192.168.233.21/' ifcfg-ens33
sed: -e expression 
#1,字符 29:“y”命令的字符串长度不同

# 正确示例:替换整个字符串而不是逐字符替换
sed -i 's/10.10.10.10/192.168.233.21/g' ifcfg-ens33

替换文件中URL指定内容

将文件中的URL(以“http://”或“https://”开头)替换为“链接”的格式。

原内容
cat file15.txt 
https://www.baidu.com
ftp://20.0.0.111
https://www.xxx.cn
http://aaa.xyz

# 精确匹配后替换
sed -r 's#https?://[a-zA-Z0-9./=_-]*#链接#g' file15.txt 
链接
ftp://20.0.0.111
链接
链接
# 匹配开头后整行替换
sed -r '/(http)|(https)/c 链接' file15.txt 
链接
ftp://20.0.0.111
链接
链接

总结

  1. sed 是一种流编辑器:逐行读取文件并执行指令操作。对于过大的文件,建议拆分后处理。
  2. sed -r 搭配扩展正则表达式使用:使用 {n} {n,} {n,m} 等匹配时,不需要加转义符 \
  3. 使用 i 选项时需谨慎:对重要文件的操作前,先备份或在实验确认无误后再使用 i
  4. sed 命令的核心功能是增删改查:特别适用于脚本中对配置文件的修改和内容添加。

  • 12
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值