一,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(centos8):sed命令的应用例子的更多相关文章

  1. linux 的sed命令解释 sed ':t;N;s/\n/,/;b t' 将换行符换成逗号

    linux 的sed命令解释 sed ':t;N;s/\n/,/;b t' 将换行符换成逗号 实现的功能是吧换行符换成逗号了,自己试验过. 求解释,:t N b t 都是什么意思??? :t 定义la ...

  2. linux中sed命令(全面解析)

    目录 一:linux中sed命令介绍 1.sed作用 2.sed命令格式 3.参数 4.sed的编辑模式 5.sed参数解析用法 二:sed 参数 -f 案例实战解析 1.前介 2.引入简介 3.方法 ...

  3. Linux系统sed命令常用参数实战

    Linux系统sed命令常用参数实战 常用参数 -n 输出某行的文本内容,通常与p联合使用, -e 命令行模式下进行sed的动作编辑,输出编辑后的内容,源文件不会发生变化 -f 以命令中指定的scri ...

  4. Linux之Sed命令详解(总结一些实用例子)

    简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的 ...

  5. 转 linux之sed命令详解

    http://jingyan.baidu.com/article/fec4bce2228f60f2618d8bb0.html sed  编辑裁剪文件命令 sed -i "s/\/db\/te ...

  6. Linux的sed命令

    一.初识sed 在部署openstack的过程中,会接触到大量的sed命令,比如 # Bind MySQL service to all network interfaces.sed -i 's/12 ...

  7. Linux之sed命令详解

    简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的 ...

  8. Linux学习sed命令

    sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送 ...

  9. linux下sed命令对文件执行文本替换

    让我们看一下 sed 最有用的命令之一,替换命令.使用该命令,可以将特定字符串或匹配的规则表达式用另一个字符串替换.下面是该命令最基本用法的示例: $ sed -e ‘s/foo/bar/’ myfi ...

随机推荐

  1. linux系统漏洞扫描工具lynis

    lynis 是一款运行在 Unix/Linux 平台上的基于主机的.开源的安全审计软件.Lynis是针对Unix/Linux的安全检查工具,可以发现潜在的安全威胁.这个工具覆盖可疑文件监测.漏洞.恶意 ...

  2. 关于AES的S盒子的计算

    对于置换piS 有如下计算: The matrix used in AES is a rotational matrix based on the value 0x1F, which is 00011 ...

  3. Linux实战(13):Centos8 同步时间

    前言 以下操作是通过ntpdate命令实现同步 timedatectl set-timezone Asia/Shanghai # 设置时区 rpm -ivh http://mirrors.wlnmp. ...

  4. 北京数途科技有限公司--EAM MAXIMO介绍

    一.EAM概述: EAM( Enterprise Asset Management)即企业资产维护管理系统 ,它是面向资产密集型(Asset-intensive)企业的企业信息化 解决方案的总称,其前 ...

  5. 【知识分享】Navicat Premium for Mac的破解教程

    转自Navicat Premium for Mac v12.0.22.0 破解教程,macOS上手动破解,无需补丁,无毒下载了Navicat,没有注册码,突然发现了这篇破解教程,竟爱不释手,顾Copy ...

  6. springboot中关于Long类型返回前端精度丢失问题处理

    使用了HuTool这个雪花算法后,会出现丢失精度的问题 hutool算法使用地址 对于一些大的业务表,自增主键这里 接口层得注意下是否会产生大数值 设计接口的时候采用String类型. 在项目中,我们 ...

  7. 加权图的最小生成树、最短路径算法 - java实现

    加权图相关算法 前言 本文主要介绍加权图算法中两个重要应用:最小生成树和最短路径. 求最小生成树时针对的是加权无向图,加权有向图的最小生成树算法成为"最小属树形图"问题,较为复杂, ...

  8. Hadoop框架:集群模式下分布式环境搭建

    本文源码:GitHub·点这里 || GitEE·点这里 一.基础环境配置 1.三台服务 准备三台Centos7服务,基础环境从伪分布式环境克隆过来. 133 hop01,134 hop02,136 ...

  9. Linux等待队列(Wait Queue)

    1. Linux等待队列概述 Linux内核的等待队列(Wait Queue)是重要的数据结构,与进程调度机制紧密相关联,可以用来同步对系统资源的访问.异步事件通知.跨进程通信等.在Linux中,等待 ...

  10. 基础篇:详解JAVA对象实例化过程

    目录 1 对象的实例化过程 2 类的加载过程 3 触发类加载的条件 4 对象的实例化过程 5 类加载器和双亲委派规则,如何打破双亲委派规则 欢迎指正文中错误 关注公众号,一起交流 参考文章 1 对象的 ...