linux下的sed应用,linux(centos8):sed命令的应用例子

本文详细介绍了Linux下的sed命令,包括其用途、如何查看版本和帮助、以及多种功能的使用,如替换字符串、删除指定行、打印匹配行、执行多项编辑操作、在指定行显示后退出、遍历修改文件等。通过实例展示了sed在实际运维中的应用,如删除百分号、替换特定字符串、获取IP地址等。此外,还提到了如何查看CentOS版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,sed命令的用途

sed是Linux下一款功能强大的非交互流式文本编辑器,

可以对文本文件进行增、删、改、查等操作,

支持按行、按字段、按正则匹配文本内容。

二,查看sed所属的rpm包

[[email protected] ~]$ whereis sed

sed: /usr/bin/sed/usr/share/man/man1/sed.1.gz /usr/share/man/man1p/sed.1p.gz /usr/share/info/sed.infosed

sed-4.5-1.el8.x86_64

如果找不到sed命令或命令被误删除

可以用dnf安装

[[email protected] ~]# dnf install sed

三,查看sed的版本和帮助

1,查看sed的版本

[[email protected] ~]# sed--versionsed(GNU sed) 4.5Copyright (C)2018Free Software Foundation, Inc.

License GPLv3+: GNU GPL version 3 or later .

This is free software: you are freeto change and redistribute it.

There is NO WARRANTY, to the extent permitted by law.

Written by Jay Fenlason, Tom Lord, Ken Pizzini,

and Paolo Bonzini.

GNU sedhome page:.

General help using GNU software: .

E-mail bug reports to: .

2,查看sed的帮助

3,查看sed的手册

四,sed功能之一:替换字符串

1,替换df空间已使用百分比的百分号%

#s:用来替换字符串

#g:在整行范围内进行替换

#如果没有g标记,则只替换每行第一个匹配到的字符串

[[email protected] ~]# df -h | sed‘s/%//g‘Filesystem Size UsedAvail Use Mounted on

devtmpfs7.5G 0 7.5G 0 /dev

tmpfs7.5G 0 7.5G 0 /dev/shm

tmpfs7.5G 492K 7.5G 1 /run

tmpfs7.5G 0 7.5G 0 /sys/fs/cgroup

...

2,例:把/etc/passwd中的root替换成liu并把所在行显示出来

#s:替换匹配到的字符串

#g:每行做全局匹配,否则每行只匹配遇到的第一个字符串

#p:打印

[[email protected] ~]$ sed-n ‘s/root/liu/gp‘ /etc/passwdliu:x:0:0:liu:/liu:/bin/bash

3,运维中的例子:得到ip地址:

先查看ip的情况

[[email protected] ~]# ip a show eth02: eth0: mtu 1500 qdisc mq state UP group default qlen 1000link/ether 00:16:3e:16:7c:a5 brd ff:ff:ff:ff:ff:ff

inet172.17.165.21/20 brd 172.17.175.255scope global dynamic noprefixroute eth0

valid_lft 311890844sec preferred_lft 311890844sec

用sed得到ip

[[email protected] ~]# ip a show eth0 | grep inet | sed‘s/inet //‘ | sed‘s/\/[0-9][0-9] brd.*$//g‘

172.17.165.21

用awk得到ip

[[email protected] ~]# ip a show eth0 | grep inet | awk ‘{print $2}‘ | awk -F/ ‘{print $1}‘

172.17.165.21

这个例子说明如果获取某列的信息,用awk更简单一些,

这里只是为了举例子演示sed的功能

五,sed功能之二:删除指定的行

1,例子:打印每个分区和使用的占比,字段之间用-分隔

#sed ‘1d‘ :,删除df结果中第一行的表头,d:删除

#--output-delimiter=‘-‘ 输出时的分隔符也可以指定

#tr -d ‘%‘   去掉百分比符号

[[email protected] ~]$ df -h | sed‘1d‘ | tr -s ‘ ‘ | cut -d ‘ ‘ -f 1,5 --output-delimiter=‘-‘ | tr -d ‘%‘devtmpfs-0tmpfs-0tmpfs-1tmpfs-0

/dev/vda1-15

/dev/vdb1-35

2,删除包含某字符串行

例:不显示所有包含tmpfs的文件系统

[[email protected] ~]# df -h | sed‘/tmpfs/d‘Filesystem Size UsedAvail Use%Mounted on/dev/vda1 100G 15G 86G 15% /

/dev/vdb1 500G 3.6G 497G 1% /databak

六,功能之三:打印匹配到的行

1,打印包含root字串的行

#-n: --quiet, --silent,只打印影响到的行

[[email protected] ~]# sed -n ‘/root/p‘ /etc/passwdroot:x:0:0:root:/root:/bin/bash

2,打印指定的行

只打印第一行:

#p:打印

[[email protected] ~]# sed -n ‘1p‘ /etc/passwd

打印1至3行

[[email protected] ~]# sed -n ‘1,3p‘ /etc/passwd

七,功能之四:执行多项编辑操作

#-e:执行一项操作

#5,$d:  删除从第5行到最末尾一行

#s/root/lhd/gp    把每行中匹配上的root替换成lhd并打印出来

[[email protected] ~]# sed -e ‘5,$d‘ -e ‘s/root/lhd/gp‘ /etc/passwd

八,功能之五:在指定行显示后退出

#q:在指定行显示之后退出

#5q:在第5行显示后退出

[[email protected] ~]# sed ‘5q‘ /etc/passwd

九,功能之六:遍历修改文件

1,修改单个文件的内容:

例:替换index.html中的‘五二零‘为‘520‘

#-i: 修改文件的内容

[[email protected] 520]# sed-i ‘s/五二零/520/g‘ index.html

2,批量替换文件

例:把/data/dev/think_file/html/520/目录下所有包含‘五二零‘的文件中的‘五二零‘为‘520‘

#-r: 遍历子目录查找

#-l:结果只显示文件名

[[email protected] 520]# sed-i ‘s/五二零/520/g‘ `grep 五二零 -rl /data/dev/think_file/html/520`

十,查看centos的版本

[[email protected] ~]$ cat /etc/redhat-release

CentOS Linux release8.0.1905 (Core)

原文:https://www.cnblogs.com/architectforest/p/12953122.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值