Linux `sed` 命令详解
Linux sed 命令详解
sed 是 Linux 系统中非常强大的流编辑器,可对文件或文本流进行查找、替换、插入和删除等操作。
1、基本语法
sed [选项] '命令' 文件名
其中:
- 选项:
-e:直接在命令行模式下运行sed脚本。-i:对文件内容进行原地修改(在文件中直接替换)。-n:安静模式(默认输出已匹配的行,可以结合p命令使用)。-f:从指定的脚本文件中读取sed命令。
- 命令:
sed中的命令用于执行查找、替换、插入和删除等操作。
2、常用命令
2.1 替换
语法:
sed 's/原字符串/新字符串/标志' 文件名
s:表示替换操作。标志:常用的标志是g,表示全局替换。
示例:
# 将文件 test.txt 中的 "hello" 替换为 "hi"
sed 's/hello/hi/' test.txt
# 将文件 test.txt 中的所有 "hello" 替换为 "hi"(全局替换)
sed 's/hello/hi/g' test.txt
# 使用 -i 选项直接修改文件内容
sed -i 's/hello/hi/g' test.txt
运行结果:

2.2 删除行
语法:
sed '行号d' 文件名
d:表示删除操作。
示例:
# 删除 test.txt 文件中的第 2 行
sed '2d' test.txt
# 删除第 2 到第 4 行
sed '2,4d' test.txt
运行结果:

2.3 查找并打印行
语法:
sed -n '/模式/p' 文件名
-n:安静模式,只输出匹配的行。/模式/:匹配的模式。p:表示打印操作。
示例:
# 打印文件test.txt 中包含 "hello" 的行
sed -n '/hello/p' test.txt
运行结果:

2.4 插入与追加
语法:
sed '行号i\内容' 文件名 # 插入
sed '行号a\内容' 文件名 # 追加
i:在指定行前插入内容。a:在指定行后追加内容。
示例:
# 在第 2 行前插入 "This is an inserted line."
sed '2i\This is an inserted line.' test.txt
# 在第 2 行后追加 "This is an appended line."
sed '2a\This is an appended line.' test.txt
运行结果:

2.5 多命令组合
使用 -e 选项,或者用 ; 分隔命令,可以一次执行多个 sed 命令。
示例:
# 在 test.txt 中,先替换 "hello" 为 "hi",然后删除第 3 行
sed -e 's/hello/hi/g' -e '3d' test.txt
运行结果:

3、高级用法
3.1 替换并保存结果到新文件
可以将结果重定向到新文件,而不更改原文件内容。
# 将hello替换为hi并将替换后的结果输出到new_test.txt
sed 's/hello/hi/g' test.txt > new_test.txt
运行结果:

3.2 在范围内替换
可以指定行范围,仅对特定行范围内的内容进行替换。
示例:
# 只在第 2 到第 4 行内将 "hello" 替换为 "hi"
sed '2,4s/hello/hi/g' test.txt
运行结果:

3.3 正则表达式匹配
sed 可以使用正则表达式匹配字符串,例如查找包含特定模式的行。
示例:
# 将所有以 "test" 开头的行的 "test" 替换为 "exam"
sed '/^hello/s/hello/hi/' test.txt

4、小结
sed非常适合处理大量数据的批量修改。- 使用
-i选项时要小心,因为它会直接修改文件内容。 - 本文只介绍了一些基本的用法,更多高级用法还需要大家自行组合摸索。
只有互相学习,才能获得更大的进步!

1258

被折叠的 条评论
为什么被折叠?



