Shell 编程三剑客之Sed(二)

简介: Shell 编程三剑客之Sed(二)

3.3.3替换符合条件的文本

sed 's/the/THE/' test.txt   ##将每行中的第一个the 替换为 THE
sed 's/l/L/2' test.txt        ##将每行中的第 2 个 l 替换为 L
sed 's/the/THE/g' test.txt    ##将文件中的所有the 替换为 THE
sed 's/o//g' test.txt       ##将文件中的所有o 删除(替换为空串)
sed 's/^/#/' test.txt       ##在每行行首插入#号
sed '/the/s/^/#/' test.txt    ##在包含the 的每行行首插入#号
sed '3,5s/the/THE/g' test.txt ##将第 3~5 行中的所有 the 替换为 THE
sed '/the/s/o/O/g' test.txt   ##将包含the 的所有行中的 o 都替换为 O


3.3.4先备份再修改数据


3.3.5迁移符合条件的文本

常用参数 含义
H 复制到剪贴板;
g、G 将剪贴板中的数据覆盖/追加至指定行;
w 保存为文件;
r 读取指定文件;
a 追加指定内容。具体操作方法如下所示。
I,i 忽略大小写
sed '/the/{H;d};$G' test.txt  ##将包含the 的行迁移至文件末尾,{;}用于多个操作
sed '1,5{H;d};14G' test.txt     ##将第 1~5 行内容转移至第 14行后
sed '/the/w out.file' test.txt  ##将包含the 的行另存为文件 out.file
sed '/the/r /etc/hostname' test.txt ##将文件/etc/hostname 的内容添加到包含 the 的每行以后
sed '3aNew' test.txt         ##在第 3 行后插入一个新行,内容为New
sed '/the/aNew' test.txt     ##在包含the 的每行后插入一个新行,内容为 New
sed '3aNew1\nNew2' test.txt     ##在第 3 行后插入多行内容,中间的\n 表示换行


3.3.6使用脚本编辑文件

使用 sed 脚本将多个编辑指令存放到文件中(每行一条编辑指令),通过“-f”选项来调用。

例如执行以下命令即可将第 1~5 行内容转移至第 14 行后,等同于sed ‘1,5{H;d};16G’ text.txt


四、Sed应用案例

4.1调整vsftpd服务配置

调整 vsftpd 服务配置,要求禁止匿名用户,但允许本地用户(也允许写入)。

#!/bin/bash
# 指定样本文件路径、配置文件路径
SAMPLE="/usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/vsftpd.conf "
CONFIG="/etc/vsftpd/vsftpd.conf"
# 备份原来的配置文件,检测文件名为/etc/vsftpd/vsftpd.conf.bak 备份文件是否存在, 若不
存在则使用 cp 命令进行文件备份
[ ! -e "$CONFIG.bak" ] && cp $CONFIG $CONFIG.bak 
# 把以anonymous_enable开头的行YES全部替换成NO,覆盖现有文件
sed -e '/^anonymous_enable/s/YES/NO/g' $SAMPLE > $CONFIG
# 把以local_enable和write_enable开头的行,NO全部替换成YES
sed -i -e '/^local_enable/s/NO/YES/g' -e '/^write_enable/s/NO/YES/g' $CONFIG 
grep "listen" $CONFIG || sed -i '$alisten=YES' $CONFIG
# 启动vsftpd 服务,并设为开机后自动运行
systemctl restart vsftpd systemctl enable vsftpd

4.2 修改DNS配置文件

修改主配置文件

修改前


修改后



五、总结

1sed是依赖于正则表达式的优秀的文本处理工具,可以对指定的文本数据进行特定的操作

2.sed常用的选项参数


3.sed的应用示例


相关文章
|
3月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
3月前
|
Shell Linux
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
1月前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
2月前
|
Shell
Shell编程(下)
Shell编程(下)
111 1
|
2月前
|
Shell Linux Windows
Shell编程(上)
Shell编程(上)
52 1
|
2月前
|
Shell Linux 开发工具
|
2月前
|
监控 Unix Shell
shell脚本编程学习
【10月更文挑战第1天】shell脚本编程
84 12
|
3月前
|
Shell Linux
Linux shell编程学习笔记82:w命令——一览无余
Linux shell编程学习笔记82:w命令——一览无余
|
3月前
|
人工智能 监控 Shell
常用的 55 个 Linux Shell 脚本(包括基础案例、文件操作、实用工具、图形化、sed、gawk)
这篇文章提供了55个常用的Linux Shell脚本实例,涵盖基础案例、文件操作、实用工具、图形化界面及sed、gawk的使用。
785 2
|
3月前
|
存储 Unix Shell
shell脚本编程基础
【9月更文挑战第4天】
56 12