linux(centos8):sed命令的应用例子
一,sed命令的用途
sed是Linux下一款功能强大的非交互流式文本编辑器,
可以对文本文件进行增、删、改、查等操作,
支持按行、按字段、按正则匹配文本内容。
说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest
对应的源码可以访问这里获取: https://github.com/liuhongdi/
说明:作者:刘宏缔 邮箱: 371125307@qq.com
二,查看sed所属的rpm包
[root@blog ~]$ whereis sed sed: /usr/bin/sed/usr/share/man/man1/sed.1.gz /usr/share/man/man1p/sed.1p.gz /usr/share/info/sed.info.gz [root@blog ~]$ rpm -qf /usr/bin/sed sed-4.5-1.el8.x86_64
如果找不到sed命令或命令被误删除
可以用dnf安装
[root@blog ~]# dnf install sed
三,查看sed的版本和帮助
1,查看sed的版本
[root@blog ~]# sed --version sed(GNU sed) 4.5 Copyright (C) 2018 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>. This is free software: you are free to 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: <https://www.gnu.org/software/sed/>. General help using GNU software: <https://www.gnu.org/gethelp/>. E-mail bug reports to: <bug-sed@gnu.org>.
2,查看sed的帮助
[root@blog ~]# sed --help
3,查看sed的手册
[root@blog ~]# man sed
四,sed功能之一:替换字符串
1,替换df空间已使用百分比的百分号%
#s:用来替换字符串
#g:在整行范围内进行替换
#如果没有g标记,则只替换每行第一个匹配到的字符串
[root@blog ~]# df -h | sed 's/%//g' Filesystem Size UsedAvail Use Mounted on devtmpfs 7.5G 0 7.5G 0 /dev tmpfs 7.5G 0 7.5G 0 /dev/shm tmpfs 7.5G 492K 7.5G 1 /run tmpfs 7.5G 0 7.5G 0 /sys/fs/cgroup
...
2,例:把/etc/passwd中的root替换成liu并把所在行显示出来
#s:替换匹配到的字符串
#g:每行做全局匹配,否则每行只匹配遇到的第一个字符串
#p:打印
[root@blog ~]$ sed -n 's/root/liu/gp' /etc/passwd liu:x:0:0:liu:/liu:/bin/bash
3,运维中的例子:得到ip地址:
先查看ip的情况
[root@blog ~]# ip a show eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:16:3e:16:7c:a5 brd ff:ff:ff:ff:ff:ff inet 172.17.165.21/20 brd 172.17.175.255 scope global dynamic noprefixroute eth0 valid_lft 311890844sec preferred_lft 311890844sec
用sed得到ip
[root@blog ~]# ip a show eth0 | grep inet | sed 's/inet //' | sed 's/\/[0-9][0-9] brd.*$//g' 172.17.165.21
用awk得到ip
[root@blog ~]# 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 '%' 去掉百分比符号
[root@blog ~]$ df -h | sed '1d' | tr -s ' ' | cut -d ' ' -f 1,5 --output-delimiter='-' | tr -d '%' devtmpfs-0 tmpfs-0 tmpfs-1 tmpfs-0 /dev/vda1-15 /dev/vdb1-35
2,删除包含某字符串行
例:不显示所有包含tmpfs的文件系统
[root@blog ~]# 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,只打印影响到的行
[root@blog ~]# sed -n '/root/p' /etc/passwd root:x:0:0:root:/root:/bin/bash
2,打印指定的行
只打印第一行:
#p:打印
[root@blog ~]# sed -n '1p' /etc/passwd
打印1至3行
[root@blog ~]# sed -n '1,3p' /etc/passwd
七,功能之四:执行多项编辑操作
#-e:执行一项操作
#5,$d: 删除从第5行到最末尾一行
#s/root/lhd/gp 把每行中匹配上的root替换成lhd并打印出来
[root@blog ~]# sed -e '5,$d' -e 's/root/lhd/gp' /etc/passwd
八,功能之五:在指定行显示后退出
#q:在指定行显示之后退出
#5q:在第5行显示后退出
[root@blog ~]# sed '5q' /etc/passwd
九,功能之六:遍历修改文件
1,修改单个文件的内容:
例:替换index.html中的'五二零'为'520'
#-i: 修改文件的内容
[root@blog 520]# sed -i 's/五二零/520/g' index.html
2,批量替换文件
例:把/data/dev/think_file/html/520/目录下所有包含'五二零'的文件中的'五二零'为'520'
#-r: 遍历子目录查找
#-l:结果只显示文件名
[root@blog 520]# sed -i 's/五二零/520/g' `grep 五二零 -rl /data/dev/think_file/html/520`
十,查看centos的版本
[root@blog ~]$ cat /etc/redhat-release CentOS Linux release 8.0.1905 (Core)
相关文章
- Linux下的双引号传奇(linux命令引号)
- Linux快速上传多个文件夹的命令指南(linux上传文件夹命令)
- Linux下删除网卡的命令操作(linux命令删除网卡)
- Linux硬件配置:实施与优化(linux硬件配置)
- Linux与笔记本的友谊:实现奇迹的可能(笔记本可以装linux吗)
- Linux下获取用户输入方法(linux获取输入)
- 嵌入式Linux官方发布:简单易用,完美性能”(嵌入式linux官网)
- Linux快速移动文件的方法(linux怎么移动文件)
- 为你的IT任务带来灵活性:探索Linux系统的秘密(应用linux系统)
- 掌握Linux防火墙状态命令,保护系统安全(linux防火墙状态命令)
- Linux应用新功能发布大会火热开幕(linux应用发布)
- Linux 系统下应用防火墙保护(linux应用防火墙)
- 开发必知:Linux内核编程实践(写linux内核)
- :Linux的分支:开源快乐之旅(linux的分支)
- Linux下Vim操作快速入门(linux的vim命令)
- Linux 应用中心:轻松获取软件与工具(linux应用中心)
- Linux事件驱动:让系统更高效的工作方式(linux事件驱动)
- 用户权限如何限制Linux Root用户的权限(linux限制root)
- Linux下设置网关的快速指南(linux设置网关命令)
- 系统为您打开Linux门:可装U盘尝鲜最新系统(可以装u盘的linux)
- Linux内核编程:入门指南(linux内核编程入门)
- Linux驱动队列:提升系统的性能与稳定性(linux驱动队列)
- Linux命令大全:如何查看TCP连接?(linux查看tcp)
- Linux下生成随机数的简单命令(linux生成随机数命令)
- 手把手教你在Linux系统下安装nginx(linux下nginx安装)
- Linux如何查看进程运行时间?(linux查看进程运行时间)
- Abaqus在Linux系统上的应用(abaquslinux)