文章目录
前言
Shell脚本,是我们在实现自动化的一个重要工具,在实现自动化的过程中不免会遇到对文本的增、删、查、改操作,如何高效的处理这些文件,是学习Shell脚本的一大重点。sed作为一款强大的文本文件流编辑器,是我们在处理文本文件时的得力助手,更是一个处理文本文件的强大生产力。
提示:为了照顾初次接触sed的朋友我们还是从最基础的概念开始
一、sed是什么?
1.基本概念
流编辑器(Stream Editor),简称 sed,是一种用于处理文本流的非交互式编辑工具。它在 Unix 和类 Unix 系统中非常常用。与传统的文本编辑器不同,sed 是设计用于自动化脚本和批处理任务的命令行工具,它按行处理文件或输入流,并对每一行应用指定的编辑命令。
小结
-
sed 是一个流编辑器,用于以非交互方式对文本进行处理。
-
它可以从文件、管道或标准输入读取文本,并进行编辑。
2.流编辑器的特点
-
非交互式:
‘sed’ 不需要用户交互,它在命令行中执行预先定义的命令和脚本来处理文本。
-
逐行处理:
‘sed’ 逐行读取输入(通常是文件或标准输入),对每一行应用编辑命令,然后输出结果。它不会一次性将整个文件加载到内存中,因此可以处理非常大的文件。
-
脚本驱动:
‘sed’ 使用简单但强大的脚本语言,这些脚本可以由单个命令或一系列命令组成。常见命令包括替换、删除、插入、追加等。
3.基本语法
sed [options] 'command' file
二、sed基本的命令和选项
1.基本命令
命令 | 作用 |
---|---|
s | 替换。例如,s/old/new/ 替换第一个匹配的 old 为 new |
d | 删除。例如,2d 删除第二行 |
p | 打印。例如,/pattern/p 打印匹配 pattern 的行 |
i | 插入。例如,2i\This is an inserted line 在第二行前插入一行 |
a | 追加。例如,2a\This is an appended line 在第二行后追加一行 |
2.常用选项
选项 | 作用 |
---|---|
-n | 不自动打印模式空间 |
-i | 直接编辑文件(原地编辑) |
-e | 允许多个编辑命令 |
三、实践使用与练习
提示:由于我想在文本中看到实际修改的效果所以统一用 "sed -i"
练习前可先创建一个practise.sh的脚本 在脚本中写如下命令,之后再创建一个practise.txt的文本文件观察效果
1.替换
#替换每行的第一个 'hello' 为 'hi'
sed -i 's/hello/ni hao/' practise.txt
#全局替换每行的 'hello' 为 'hi'
sed -i 's/hello/ni hao/g' practise.txt
#只替换文件中的某一行的 'hello'
sed -i '2s/hello/ni hao/' practise.txt
2.删除
#删除第二行
sed -i '2d' practise.txt
#删除匹配模式的行
sed -i '/hello world!/d' practise.txt
3.打印
#打印匹配到的行 -n 选项可抑制 sed 的默认输出
sed -n '/hello world!/p' practise.txt
#同样也可以用grep实现
grep 'ni hao world!' practise.txt
4.插入和追加
#在第二行前插入一行
sed -i '2i\This is an inserted line' practise.txt
#在第二行后追加一行
sed -i '2a\This is an appended line' practise.txt
5.使用正则匹配
#查找[hello]所在行,并在其后加入新的一行
sed -i "/^\[hello\]$/a ni hao world!" practise.txt
#查找[hello]所在行,并在其前加入新的一行
sed -i "/^\[hello\]$/i ni hao world!" practise.txt
总结
sed作为一款强大的文本文件流编辑器,是我们在实现自动化的过程中一个重要的工具,也是我们学习Shell的一项重要的技能,愿在今后和大家一起学习、一起进步,加油各位!
标签:txt,----,命令,编辑器,sed,practise,hello From: https://blog.csdn.net/m0_60204812/article/details/139388657