简介
sed(Stream Editor)是一款流式文本编辑器,在 Linux 和类 Unix 系统中广泛使用。它的设计目的是用于对文本进行处理和转换,可以用于替换、删除、插入、打印等操作。sed 命令通过逐行处理文本,允许您使用简单的命令来编辑大量文本数据。本文将详细介绍 sed 命令的基本用法和一些常见的编辑操作。
基本语法
sed 命令的基本语法如下:
bash复制代码sed [options] 'command' input_file
- options:可选参数,用于指定 sed 命令的行为。
- 'command':用于指定编辑操作的命令,可以是单个命令或多个命令的组合。
- input_file:要处理的输入文件名。
常用参数
下面是一些常见的 sed 命令选项:
- -e:允许在命令行中指定多个编辑命令。
- -i:直接在输入文件中进行编辑(原地编辑),而不是在标准输出上打印结果。
- -n:禁止默认输出,只打印被处理的文本。
使用示例
下面是一些常用的 sed 命令:
- 替换文本
bash复制代码sed 's/pattern/replacement/' input_file
上述命令将在input_file 文件中查找第一个匹配的pattern 并替换为 replacement。如我们要将fruits.txt中的APPLE替换为Apple,如下:
bash复制代码sed 's/APPLE/Apple/' fruits.txt
########
apple
Apple
banana
BANANA
ORANGE
orange
grape
Grape
good
Good
- 全局替换
bash复制代码sed 's/pattern/replacement/g' input_file
该命令将在 input_file 文件中查找所有匹配的 pattern 并替换为 replacement。比如我们要在fruits.txt中找到所有的orange并替换为peach。
bash复制代码sed 's/orange/peach/g' fruits.txt
#########
apple
APPLE
banana
BANANA
ORANGE
peach
grape
Grape
good
Good
apple
peach
peach
peach
- 替换特定行
bash复制代码sed 'ns/pattern/replacement/' input_file
此命令将在input_file 文件的第 n 行中查找匹配的pattern并替换为replacement。比如我们要将第4行的BANANA改为banana。
bash复制代码sed '4s/BANANA/banana/' fruits.txt
#######
apple
APPLE
banana
banana
ORANGE
orange
grape
Grape
good
Good
apple
orange
orange
orange
- 删除特定行
bash复制代码sed 'nd' input_file
该命令将删除 input_file 文件的第 n 行。比如我们要删除fruits.txt的第13行,命令如下:
bash复制代码sed '13d' fruits.txt
########
apple
APPLE
banana
BANANA
ORANGE
orange
grape
Grape
good
Good
apple
orange
orange
- 插入文本
bash复制代码sed 'ni\Insert this line' input_file
此命令将在 input_file 文件的第 n 行之前插入新行 "Insert this line"。比如我们要在fruits.txt的第5号插入mango,命令如下:
bash复制代码sed '5i\mango' fruits.txt
#########
apple
APPLE
banana
BANANA
mango
ORANGE
orange
grape
Grape
good
Good
apple
orange
orange
orange
sed结合正则表达式
sed 支持强大的正则表达式,可以实现更复杂的模式匹配和处理。我们可以在 sed 命令中使用正则表达式来匹配文本并进行编辑操作。
- 替换文件中的所有 "orange":
bash复制代码sed 's/orange/mango/g' fruits.txt
######
apple
APPLE
banana
BANANA
ORANGE
mango
grape
Grape
good
Good
apple
mango
mango
mango
上述命令将在 fruits.txt 文件中将所有 "orange" 替换为 "mango"。
- 删除包含 "banana" 的行:
bash复制代码sed '/banana/d' fruits.txt
#######
apple
APPLE
BANANA
ORANGE
orange
grape
Grape
good
Good
apple
orange
orange
orange
此命令将从 fruits.txt 文件中删除所有包含 "banana" 的行。
- 在文件开头插入标题:
bash复制代码sed '1i\Title of Fruits' fruits.txt
#######
Title of Fruits
apple
APPLE
banana
BANANA
ORANGE
orange
grape
Grape
good
Good
apple
orange
orange
orange
此命令将在 fruits.txt 文件的开头插入一行 "Title of Fruits"。
总结
sed 命令是一款强大的流式文本编辑器,可用于对文本进行替换、删除、插入等操作。通过使用简单的命令和正则表达式,您可以高效地处理大量文本数据。在本文中,我们介绍了 sed 命令的基本用法和一些常见的编辑操作,希望这能帮助您更好地利用 sed 命令处理和转换文本。
获取更多技术资料,请点击!> 霍格沃兹测试开发学社|免费学习资料大放送,助你事半功倍! - 公众号 - 测试人社区