课时113:sed命令_进阶实践_修改实践

devtools/2024/10/18 16:50:19/

2.2.2 修改实践

学习目标

这一节,我们从 多点操作、增改实践、小结 三个方面来学习

多点操作

简介

我们可以借助 '动作1;动作2' 或者 -e '动作1' -e '动作2' 的方式实现多操作的并行实施

实践1-内容的过滤编辑

不显示所有空行和注释信息
[root@localhost ~]# sed '/^#/d;/^$/d' nginx.conf
worker_processes  1;
http {sendfile        on;keepalive_timeout  65;server {listen       8000;server_name  localhost;location / {root   html;index  index.html index.htm;}}
}先剔除空行,然后不显示所有包含注释的信息
[root@localhost ~]# sed -rn '/^$/d;/^[[:space:]]*#/!p' nginx.conf
worker_processes  1;
http {sendfile        on;keepalive_timeout  65;server {listen       8000;server_name  localhost;location / {root   html;index  index.html index.htm;}}
}

实践2-借助于 i.bak 方式对有效信息进行过滤

编辑文件的时候,原内容备份到一个额外的文件
[root@localhost ~]# sed -i.bak '/^#/d;/^$/d' nginx.conf
[root@localhost ~]# cat nginx.conf
worker_processes  1;
http {sendfile        on;keepalive_timeout  65;server {listen       8000;server_name  localhost;location / {root   html;index  index.html index.htm;}}
}
[root@localhost ~]# grep '#' nginx.conf.bak
#user  nobody;

增改实践

实践1-借助于&符号实现内容的扩充式更改编辑

查看原内容
[root@localhost ~]# head -n 1 /etc/passwd
root:x:0:0:root:/root:/bin/bash对原内容进行扩充替换
[root@localhost ~]# head -n 1 /etc/passwd | sed -n 's/root/&user/1p'
rootuser:x:0:0:root:/root:/bin/bash
[root@localhost ~]# head -n 1 /etc/passwd | sed -n 's/root/&user/gp'
rootuser:x:0:0:rootuser:/rootuser:/bin/bash

实践2-借助于s实现内容的替换式更改编辑

获取没有被注释的信息
[root@localhost ~]# sed -n '/^#/!p' /etc/fstabUUID=5583bd7c-cc9f-4e19-b453-c224102f3ed5 /      xfs     defaults        0 0
UUID=cbd246cd-1df8-4fe7-9040-823cd0978837 /boot  xfs     defaults        0 0将注释的信息进行替换
[root@localhost ~]# sed -rn '/^#/!s@^@#@p' /etc/fstab
#
#UUID=5583bd7c-cc9f-4e19-b453-c224102f3ed5 /     xfs     defaults        0 0
#UUID=cbd246cd-1df8-4fe7-9040-823cd0978837 /boot xfs     defaults        0 0

实践3-借助于 i|a 对文件进行 插入|追加 式更改编辑

基于内容匹配相关信息并打印
[root@localhost ~]# sed -n '/listen/p' nginx.conf
worker_processes  1;
http {sendfile        on;keepalive_timeout  65;server {listen       8000;server_name  localhost;location / {root   html;index  index.html index.htm;}}
}
基于内容匹配追加1行内容
[root@localhost ~]# sed '/listen/a\\tlisten\t\t80;' nginx.conf
worker_processes  1;
http {sendfile        on;keepalive_timeout  65;server {listen       8000;listen          80;server_name  localhost;location / {root   html;index  index.html index.htm;}}
}
基于内容匹配插入2行内容 -- 借助于\n的换行功能,将1行变成两行
[root@localhost ~]# sed '/listen/i\\tlisten\t\t80;\n\tlisten\t\t8080;' nginx.conf
worker_processes  1;
http {sendfile        on;keepalive_timeout  65;server {listen          80;listen          8080;listen       8000;server_name  localhost;location / {root   html;index  index.html index.htm;}}
}

实践4-借助于 环境变量和s|c 对文件进行 修改|替换 式更改编辑

定制环境变量
[root@localhost ~]# port=8080使用多点修改
[root@localhost ~]# sed -r -e "s/listen.*;/listen\t$port;/" -e '/server_name/c \\tserver_name '$(hostname):$port';' nginx.conf
worker_processes  1;
http {sendfile        on;keepalive_timeout  65;server {listen  8080;server_name localhost:8080;location / {root   html;index  index.html index.htm;}}
}
注意:这里涉及到环境变量的解读,千万不要被单引号转义了

小结



http://www.ppmy.cn/devtools/29572.html

相关文章

Excel 透视表:数据分析利器

Excel 透视表:数据分析利器 Excel 透视表是 Excel 中一个强大的数据分析工具,可以帮助用户快速、轻松地汇总、分析大量数据。它能够将复杂的数据转化为易于理解的摘要信息,并提供多种视图和选项供用户探索数据。 重要性 Excel 透视表在数据…

利用亚马逊云科技GenAI企业助手Amazon Q Business构建企业代码开发知识库

2024年五一节假日的前一天,亚马逊云科技正式重磅发布了云计算行业期待已久的服务——Amazon Q Business。Amazon Q Business是专为企业用户打造的一个开箱即用的完善而强大企业GenAI助手。企业用户只需要将Amazon Q Business连接到现有的企业内部数据源,…

Android Studio报错:Constant expression required

【出现的问题】: 使用JDK17以上版本,switch语句报错:Constant expression required 【解决方法】: 在gradle.properties配置文件下添加代码: android.nonFinalResIdsfalse 如图: 接着再点击右上角的Sync…

编译Qt6.5.3LTS版本(Mac/Windows)的mysql驱动(附带编译后的全部文件)

文章目录 0 背景1 编译过程2 福利参考 0 背景 因为项目要用到对MYSQL数据库操作,所以需要连接到MYSQL数据库。但是连接需要MYSQL驱动,但是Qt本身不自带MYSQL驱动,需要自行编译。网上有很多qt之前版本的mysql驱动,但是没有找到qt6…

结构分析的有限元法及matlab实现(徐荣桥)|【PDF教材+配套案例Matlab源码】

专栏导读 作者简介:工学博士,高级工程师,专注于工业软件算法研究本文已收录于专栏:《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现,并提供所有案例完整源码;2.单元…

JVM对象锁的升级过程

在Java中,锁升级是一个动态过程,JVM根据运行时的线程竞争情况自动调整锁的状态。这个过程涵盖从偏向锁到轻量级锁,最后可能升级到重量级锁。下面详细解释每个步骤以及它们之间的转换机制。 1. 偏向锁 偏向锁是一种针对单线程执行代码块的优…

本地大语言模型LLM的高效运行专家 | Ollama

Ollama简介 Ollama是一个开源的大型语言模型服务工具,它帮助用户快速在本地运行大模型。通过简单的安装指令,用户可以执行一条命令就在本地运行开源大型语言模型,如Llama 2。Ollama极大地简化了在Docker容器内部署和管理LLM的过程&#xff0…

LeetCode135:分发糖果

题目描述 n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求,给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果。 相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩子分发糖果,计算并返回需…