【Linux】万字长文讲透Linux的sed命令,详解大全,附带大量实例,可直接使用
CSDN 2024-10-10 10:37:02 阅读 98
在 Linux 和 Unix 系统中,<code>sed(stream editor)是一款功能强大且灵活的文本处理工具。它可以在不需要用户交互的情况下,对文本进行多种形式的编辑和转换。本文将深入探讨 sed
命令的各种用法,并提供大量示例,帮助你在实际工作中充分利用这一工具。
🧑 博主简介:现任阿里巴巴嵌入式技术专家,15年工作经验,深耕嵌入式+人工智能领域,精通嵌入式领域开发、技术管理、简历招聘面试。CSDN优质创作者,提供产品测评、学习辅导、简历面试辅导、毕设辅导、项目开发、C/C++/Java/Python/Linux/AI等方面的服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:
gylzbk
)
💬 博主粉丝群介绍:① 群内初中生、高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。
【Linux】万字长文讲透Linux的sed命令,详解大全,附带大量实例,可直接使用
1️⃣ 基本用法1.1 🛠️ 常用选项
2️⃣ 常用命令2.1 🔄 替换文本 (`s`)2.2 🗑️ 删除行 (`d`)2.3 ➕ 插入和追加文本 (`i` 和 `a`)2.4 🔄 替换行 (`c`)2.5 🖨️ 打印行 (`p`)2.6 🛠️ 多重编辑 (`-e`)2.7 📜 使用脚本文件 (`-f`)
3️⃣ 高级用法3.1 🔄 替换文本并保留原始内容3.2 🗑️ 删除空白行和包含仅有空白字符的行3.3 📜 处理多行模式匹配3.4 🔄 使用正则表达式替换文本3.5 🔄 使用元字符处理文本3.6 🔄 替换并引用匹配的文本3.7 🖨️ 打印匹配模式的行3.8 🗑️ 条件处理和多行操作3.9 🗂️ 读取和写入文件3.10 🖥️ 在脚本中使用 sed3.11 🌐 结合其他命令使用3.11.1 使用管道将其他命令的输出传递给 sed3.11.2 在脚本中结合使用 sed 和其他命令
3.12 📂 处理大文件3.12.1 使用 sed 处理大文件时,可以结合其他工具提高效率3.12.2 使用 sed 进行批量处理
4️⃣ 综合示例4.1 🔄 替换文本并保留原始内容4.2 🗑️ 删除空白行和包含仅有空白字符的行4.3 📜 处理多行模式匹配4.4 🔄 使用正则表达式替换文本4.5 🔄 使用元字符处理文本4.6 🔄 替换并引用匹配的文本4.7 🖨️ 打印匹配模式的行4.8 🗑️ 条件处理和多行操作4.9 🗂️ 读取和写入文件4.10 🖥️ 在脚本中使用 sed4.11 🌐 结合其他命令使用4.11.1 使用管道将其他命令的输出传递给 sed4.11.2 在脚本中结合使用 sed 和其他命令
4.12 📂 处理大文件4.12.1 使用 sed 处理大文件时,可以结合其他工具提高效率4.12.2 使用 sed 进行批量处理
4.13 🧩 处理 CSV 文件4.13.1 将 CSV 文件中的逗号替换为制表符4.13.2 删除 CSV 文件中的第一列4.13.3 将 CSV 文件中的第二列替换为 "new_value"
4.14 🔄 高级替换和引用4.14.1 使用 & 引用匹配的文本4.14.2 使用 \1, \2, ... 引用捕获组
4.15 🌟 综合示例4.15.1 替换特定行范围内的内容4.15.2 使用 `sed` 进行复杂的模式匹配和替换4.15.3 处理多行模式4.15.4 在特定行前后添加内容4.15.5 删除文件中的特定模式及其后面的几行4.15.6 逆序文件中的行
5️⃣ 使用 `sed` 进行文本分析5.1 🧮 统计文件中包含特定模式的行数5.2 📊 统计文件中每个单词出现的次数5.3 🔍 查找并替换多行模式中的特定模式5.4 🔍 查找并替换包含特定模式的行5.5 🔍 查找并替换特定行范围内的模式5.6 🔍 使用 `sed` 进行条件替换
6️⃣ 使用 `sed` 处理日志文件6.1 🔍 查找并替换日志文件中的特定模式6.2 🗑️ 删除日志文件中的特定日期范围内的日志6.3 🔍 提取日志文件中的特定模式6.4 🔄 替换日志文件中的时间戳格式6.5 🗂️ 将日志文件中的错误级别重新排序6.6 📊 统计日志文件中每种错误级别的次数
7️⃣ 使用 `sed` 进行文件格式转换7.1 🔄 将文件中的所有大写字母转换为小写字母7.2 🔄 将文件中的所有小写字母转换为大写字母7.3 🔄 将制表符转换为空格7.4 🔄 将空格转换为制表符7.5 🔄 将 CSV 文件转换为 TSV 文件7.6 🔄 将 TSV 文件转换为 CSV 文件
8️⃣ 使用 `sed` 进行数据清洗8.1 🗑️ 删除特定列的数据8.2 🔄 替换特定列的数据8.3 🗂️ 交换特定列的数据8.4 🔄 清洗并标准化数据格式8.5 🗑️ 删除包含特定模式的行
9️⃣ 处理多行文本和复杂模式9.1 🔄 逆序文件中的行9.2 🔄 处理多行模式匹配和替换9.3 🔄 在多行模式中查找并替换特定模式9.4 🔄 删除多行模式中的特定模式9.5 🗂️ 提取多行模式中的特定模式9.6 🔄 处理嵌套模式
🔟 总结📚 参考资料
1️⃣ 基本用法
<code>sed 的基本语法如下:
sed [选项] '脚本' 文件
选项
:可以是 -e
(表达式),-f
(脚本文件)等。脚本
:包含一个或多个 sed
命令。文件
:要处理的文本文件。
1.1 🛠️ 常用选项
-e 脚本
或 --expression=脚本
:直接在命令行中添加 sed
命令。-f 脚本文件
或 --file=脚本文件
:从指定的脚本文件中读取 sed
命令。-n
或 --quiet
或 --silent
:仅显示由 sed
命令处理的行。-i[SUFFIX]
或 --in-place[=SUFFIX]
:直接编辑文件内容,原文件内容会被替换,如果指定了 SUFFIX
,则会保存备份。
2️⃣ 常用命令
2.1 🔄 替换文本 (s
)
替换是 sed
最常用的功能之一。基本格式为:
sed 's/原文本/新文本/选项' 文件
g
:全局替换,替换行内所有匹配的文本。N
:替换第 N 个匹配项。
示例:
# 将文件中的所有 foo 替换为 bar
sed 's/foo/bar/g' file.txt
# 只替换第一个 foo 为 bar
sed 's/foo/bar/' file.txt
# 只替换第2个 foo 为 bar
sed 's/foo/bar/2' file.txt
# 在原文件中直接替换 foo 为 bar
sed -i 's/foo/bar/g' file.txt
2.2 🗑️ 删除行 (d
)
sed
可以根据条件删除行:
# 删除文件中的第2行
sed '2d' file.txt
# 删除文件中的第2到第4行
sed '2,4d' file.txt
# 删除所有包含 foo 的行
sed '/foo/d' file.txt
2.3 ➕ 插入和追加文本 (i
和 a
)
在特定行前插入或在特定行后追加文本:
# 在第2行后追加一行 "This is a new line"
sed '2a\This is a new line' file.txt
# 在第2行前插入一行 "This is a new line"
sed '2i\This is a new line' file.txt
2.4 🔄 替换行 (c
)
替换整行内容:
# 将第2行替换为 "This is a new line"
sed '2c\This is a new line' file.txt
# 将包含 foo 的行替换为 "This line contains foo"
sed '/foo/c\This line contains foo' file.txt
2.5 🖨️ 打印行 (p
)
打印特定行:
# 打印文件中的第2行
sed -n '2p' file.txt
# 打印文件中的第2到第4行
sed -n '2,4p' file.txt
# 打印所有包含 foo 的行
sed -n '/foo/p' file.txt
2.6 🛠️ 多重编辑 (-e
)
可以在一次 sed
调用中执行多个命令:
# 将第1行替换为 "First line",删除第2行
sed -e '1c\First line' -e '2d' file.txt
2.7 📜 使用脚本文件 (-f
)
将多个 sed
命令写入脚本文件,并通过 -f
选项执行:
# 创建一个脚本文件 script.sed,内容如下:
# s/foo/bar/g
# 2d
# 使用脚本文件进行编辑
sed -f script.sed file.txt
3️⃣ 高级用法
3.1 🔄 替换文本并保留原始内容
可以使用 w
命令将修改后的内容写入新文件,同时保留原始文件:
# 将 foo 替换为 bar,同时将结果写入新文件
sed 's/foo/bar/g; w newfile.txt' file.txt
3.2 🗑️ 删除空白行和包含仅有空白字符的行
# 删除空白行
sed '/^$/d' file.txt
# 删除仅包含空白字符的行
sed '/^[[:space:]]*$/d' file.txt
3.3 📜 处理多行模式匹配
# 将包含 "start" 和 "end" 之间的所有行替换为 "replaced"
sed '/start/,/end/c\replaced' file.txt
3.4 🔄 使用正则表达式替换文本
# 将所有以数字开头的行中的 foo 替换为 bar
sed '/^[0-9]/s/foo/bar/g' file.txt
# 将所有形如 123-456-7890 的电话号码替换为 (123) 456-7890
sed -E 's/([0-9]{3})-([0-9]{3})-([0-9]{4})/(\1) \2-\3/g' file.txt
3.5 🔄 使用元字符处理文本
# 将每行的行首添加 "START: "
sed 's/^/START: /' file.txt
# 将每行的行尾添加 " :END"
sed 's/$/ :END/' file.txt
# 删除所有空行
sed '/^$/d' file.txt
# 删除所有以空格、制表符或换行符开头的行
sed '/^[ \t\n]/d' file.txt
3.6 🔄 替换并引用匹配的文本
# 将 foo 替换为 [foo]
sed 's/foo/[&]/g' file.txt
# 将形如 123-456-7890 的电话号码替换为 (123) 456-7890
sed -E 's/([0-9]{3})-([0-9]{3})-([0-9]{4})/(\1) \2-\3/g' file.txt
3.7 🖨️ 打印匹配模式的行
# 打印文件中的第2行
sed -n '2p' file.txt
# 打印文件中的第2到第4行
sed -n '2,4p' file.txt
# 打印所有包含 foo 的行
sed -n '/foo/p' file.txt
3.8 🗑️ 条件处理和多行操作
# 如果当前行包含 foo,则在当前行后追加 "Found foo"
sed '/foo/a\Found foo' file.txt
# 如果当前行包含 foo,则将其替换为 bar,否则将其替换为 baz
sed '/foo/{s/foo/bar/g;};/foo/!{s/$/baz/;}' file.txt
# 删除包含 foo 的行及其下一行
sed '/foo/{N;d;}' file.txt
# 在每两个连续的行合并成一行
sed 'N;s/\n/ /' file.txt
3.9 🗂️ 读取和写入文件
# 在每行后读取并插入文件 content.txt 的内容
sed 'r content.txt' file.txt
# 将所有包含 foo 的行写入 output.txt
sed -n '/foo/w output.txt' file.txt
3.10 🖥️ 在脚本中使用 sed
#!/bin/bash
# 示例:在脚本中使用 sed 进行替换
input="input.txt"code>
output="output.txt"code>
sed 's/foo/bar/g' "$input" > "$output"
# 示例:在脚本中使用多个 sed 命令
sed -e 's/foo/bar/g' -e '/baz/d' "$input" > "$output"
3.11 🌐 结合其他命令使用
3.11.1 使用管道将其他命令的输出传递给 sed
# 示例:将 ls 命令的输出传递给 sed,并将所有 .txt 文件替换为 .bak 文件
ls | sed 's/\.txt$/.bak/'
3.11.2 在脚本中结合使用 sed 和其他命令
#!/bin/bash
# 示例:将文件中的所有 foo 替换为 bar,并将结果传递给 grep 进行过滤
sed 's/foo/bar/g' file.txt | grep 'pattern'
3.12 📂 处理大文件
3.12.1 使用 sed 处理大文件时,可以结合其他工具提高效率
# 示例:使用 awk 和 sed 结合处理大文件,先用 awk 过滤,再用 sed 处理
awk '/pattern/' bigfile.txt | sed 's/foo/bar/g'
3.12.2 使用 sed 进行批量处理
# 示例:对目录中的所有文件进行批量处理,将所有 .txt 文件中的 foo 替换为 bar
for file in *.txt; do
sed -i 's/foo/bar/g' "$file"
done
4️⃣ 综合示例
4.1 🔄 替换文本并保留原始内容
# 将 foo 替换为 bar,同时保留原始内容
sed 's/foo/bar/g; w file.bak' file.txt
4.2 🗑️ 删除空白行和包含仅有空白字符的行
# 删除空白行
sed '/^$/d' file.txt
# 删除仅包含空白字符的行
sed '/^[[:space:]]*$/d' file.txt
4.3 📜 处理多行模式匹配
# 将包含 "start" 和 "end" 之间的所有行替换为 "replaced"
sed '/start/,/end/c\replaced' file.txt
4.4 🔄 使用正则表达式替换文本
# 将所有以数字开头的行中的 foo 替换为 bar
sed '/^[0-9]/s/foo/bar/g' file.txt
# 将所有形如 123-456-7890 的电话号码替换为 (123) 456-7890
sed -E 's/([0-9]{3})-([0-9]{3})-([0-9]{4})/(\1) \2-\3/g' file.txt
4.5 🔄 使用元字符处理文本
# 将每行的行首添加 "START: "
sed 's/^/START: /' file.txt
# 将每行的行尾添加 " :END"
sed 's/$/ :END/' file.txt
# 删除所有空行
sed '/^$/d' file.txt
# 删除所有以空格、制表符或换行符开头的行
sed '/^[ \t\n]/d' file.txt
4.6 🔄 替换并引用匹配的文本
# 将 foo 替换为 [foo]
sed 's/foo/[&]/g' file.txt
# 将形如 123-456-7890 的电话号码替换为 (123) 456-7890
sed -E 's/([0-9]{3})-([0-9]{3})-([0-9]{4})/(\1) \2-\3/g' file.txt
4.7 🖨️ 打印匹配模式的行
# 打印文件中的第2行
sed -n '2p' file.txt
# 打印文件中的第2到第4行
sed -n '2,4p' file.txt
# 打印所有包含 foo 的行
sed -n '/foo/p' file.txt
4.8 🗑️ 条件处理和多行操作
# 如果当前行包含 foo,则在当前行后追加 "Found foo"
sed '/foo/a\Found foo' file.txt
# 如果当前行包含 foo,则将其替换为 bar,否则将其替换为 baz
sed '/foo/{s/foo/bar/g;};/foo/!{s/$/baz/;}' file.txt
# 删除包含 foo 的行及其下一行
sed '/foo/{N;d;}' file.txt
# 将每两个连续的行合并成一行
sed 'N;s/\n/ /' file.txt
4.9 🗂️ 读取和写入文件
# 在每行后读取并插入文件 content.txt 的内容
sed 'r content.txt' file.txt
# 将所有包含 foo 的行写入 output.txt
sed -n '/foo/w output.txt' file.txt
4.10 🖥️ 在脚本中使用 sed
#!/bin/bash
# 示例:在脚本中使用 sed 进行替换
input="input.txt"code>
output="output.txt"code>
sed 's/foo/bar/g' "$input" > "$output"
# 示例:在脚本中使用多个 sed 命令
sed -e 's/foo/bar/g' -e '/baz/d' "$input" > "$output"
4.11 🌐 结合其他命令使用
4.11.1 使用管道将其他命令的输出传递给 sed
# 示例:将 ls 命令的输出传递给 sed,并将所有 .txt 文件替换为 .bak 文件
ls | sed 's/\.txt$/.bak/'
4.11.2 在脚本中结合使用 sed 和其他命令
#!/bin/bash
# 示例:将文件中的所有 foo 替换为 bar,并将结果传递给 grep 进行过滤
sed 's/foo/bar/g' file.txt | grep 'pattern'
4.12 📂 处理大文件
4.12.1 使用 sed 处理大文件时,可以结合其他工具提高效率
# 示例:使用 awk 和 sed 结合处理大文件,先用 awk 过滤,再用 sed 处理
awk '/pattern/' bigfile.txt | sed 's/foo/bar/g'
4.12.2 使用 sed 进行批量处理
# 示例:对目录中的所有文件进行批量处理,将所有 .txt 文件中的 foo 替换为 bar
for file in *.txt; do
sed -i 's/foo/bar/g' "$file"
done
4.13 🧩 处理 CSV 文件
4.13.1 将 CSV 文件中的逗号替换为制表符
sed 's/,/\t/g' file.csv
4.13.2 删除 CSV 文件中的第一列
sed 's/^[^,]*,//' file.csv
4.13.3 将 CSV 文件中的第二列替换为 “new_value”
sed 's/^\([^,]*,\)[^,]*/\1new_value/' file.csv
4.14 🔄 高级替换和引用
4.14.1 使用 & 引用匹配的文本
# 将 foo 替换为 [foo]
sed 's/foo/[&]/g' file.txt
4.14.2 使用 \1, \2, … 引用捕获组
# 将形如 123-456-7890 的电话号码替换为 (123) 456-7890
sed -E 's/([0-9]{3})-([0-9]{3})-([0-9]{4})/(\1) \2-\3/g' file.txt
4.15 🌟 综合示例
4.15.1 替换特定行范围内的内容
# 将第3行到第5行的内容替换为 "new content"
sed '3,5c\new content' file.txt
4.15.2 使用 sed
进行复杂的模式匹配和替换
# 将形如 "user@example.com" 的邮箱地址替换为 "user at example dot com"
sed 's/\([a-zA-Z0-9._%+-]\+\)@\([a-zA-Z0-9.-]\+\)\.\([a-zA-Z]\{2,4\}\)/\1 at \2 dot \3/g' file.txt
4.15.3 处理多行模式
# 示例:将每两个连续的行合并成一行
sed 'N;s/\n/ /' file.txt
# 示例:删除包含 foo 的行及其前一行
sed '/foo/{x;d;}; x' file.txt
4.15.4 在特定行前后添加内容
# 在第5行前添加 "Start of section"
sed '5i\Start of section' file.txt
# 在第5行后添加 "End of section"
sed '5a\End of section' file.txt
4.15.5 删除文件中的特定模式及其后面的几行
# 删除包含 "pattern" 的行及其后面的两行
sed '/pattern/{N;N;d;}' file.txt
4.15.6 逆序文件中的行
# 使用 sed 和 tac(倒序输出)命令
tac file.txt | sed '1!G;h;$!d'
5️⃣ 使用 sed
进行文本分析
5.1 🧮 统计文件中包含特定模式的行数
# 统计文件中包含 "pattern" 的行数
grep -c 'pattern' file.txt
5.2 📊 统计文件中每个单词出现的次数
# 使用 tr、sort 和 uniq 命令统计每个单词出现的次数
tr -cs '[:alnum:]' '[\n*]' < file.txt | sort | uniq -c | sort -nr
# 使用 awk 统计每个单词出现的次数
awk '{for(i=1;i<=NF;i++) count[$i]++} END{for(word in count) print word, count[word]}' file.txt
5.3 🔍 查找并替换多行模式中的特定模式
# 示例:查找包含 "start" 和 "end" 之间的所有行,并将其中的 "foo" 替换为 "bar"
sed '/start/,/end/{s/foo/bar/g}' file.txt
5.4 🔍 查找并替换包含特定模式的行
# 示例:查找包含 "pattern" 的行,并将其中的 "foo" 替换为 "bar"
sed '/pattern/s/foo/bar/g' file.txt
5.5 🔍 查找并替换特定行范围内的模式
# 示例:查找第3行到第5行,并将其中的 "foo" 替换为 "bar"
sed '3,5{s/foo/bar/g}' file.txt
5.6 🔍 使用 sed
进行条件替换
# 示例:如果当前行包含 "pattern1",则将 "foo" 替换为 "bar"
sed '/pattern1/s/foo/bar/' file.txt
# 示例:如果当前行不包含 "pattern2",则将 "foo" 替换为 "baz"
sed '/pattern2/!s/foo/baz/' file.txt
6️⃣ 使用 sed
处理日志文件
6.1 🔍 查找并替换日志文件中的特定模式
# 示例:查找日志文件中的 "ERROR" 并将其替换为 "WARNING"
sed 's/ERROR/WARNING/g' logfile.log
6.2 🗑️ 删除日志文件中的特定日期范围内的日志
# 示例:删除日志文件中从 "2023-01-01" 到 "2023-01-31" 的所有日志
sed '/2023-01-01/,/2023-01-31/d' logfile.log
6.3 🔍 提取日志文件中的特定模式
# 示例:提取日志文件中包含 "ERROR" 的所有行
sed -n '/ERROR/p' logfile.log
6.4 🔄 替换日志文件中的时间戳格式
# 示例:将时间戳从 "YYYY-MM-DD HH:MM:SS" 格式替换为 "MM/DD/YYYY HH:MM:SS"
sed -E 's/([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2}:[0-9]{2}:[0-9]{2})/\2\/\3\/\1 \4/' logfile.log
6.5 🗂️ 将日志文件中的错误级别重新排序
# 示例:将日志文件中的 "ERROR", "WARNING", "INFO" 按照 "ERROR", "WARNING", "INFO" 的顺序重新排序
sed -E 's/(ERROR|WARNING|INFO)/\U&/g' logfile.log | sort -r
6.6 📊 统计日志文件中每种错误级别的次数
# 示例:统计日志文件中 "ERROR", "WARNING", "INFO" 出现的次数
grep -Eo 'ERROR|WARNING|INFO' logfile.log | sort | uniq -c
7️⃣ 使用 sed
进行文件格式转换
7.1 🔄 将文件中的所有大写字母转换为小写字母
sed 's/.*/\L&/' file.txt
7.2 🔄 将文件中的所有小写字母转换为大写字母
sed 's/.*/\U&/' file.txt
7.3 🔄 将制表符转换为空格
# 将所有制表符转换为四个空格
sed 's/\t/ /g' file.txt
7.4 🔄 将空格转换为制表符
# 将所有空格转换为制表符
sed 's/ \{1,\}/\t/g' file.txt
7.5 🔄 将 CSV 文件转换为 TSV 文件
# 将 CSV 文件中的逗号替换为制表符
sed 's/,/\t/g' file.csv
7.6 🔄 将 TSV 文件转换为 CSV 文件
# 将 TSV 文件中的制表符替换为逗号
sed 's/\t/,/g' file.tsv
8️⃣ 使用 sed
进行数据清洗
8.1 🗑️ 删除特定列的数据
# 删除 CSV 文件中的第一列
sed 's/^[^,]*,//' file.csv
8.2 🔄 替换特定列的数据
# 将 CSV 文件中的第二列替换为 "new_value"
sed 's/^\([^,]*,\)[^,]*/\1new_value/' file.csv
8.3 🗂️ 交换特定列的数据
# 使用 awk 交换 CSV 文件中的第2列和第4列
awk -F, '{temp=$2; $2=$4; $4=temp; OFS=","; print}' file.csvcode>
8.4 🔄 清洗并标准化数据格式
# 将电话号码格式从 "123-456-7890" 标准化为 "(123) 456-7890"
sed -E 's/([0-9]{3})-([0-9]{3})-([0-9]{4})/(\1) \2-\3/' file.txt
8.5 🗑️ 删除包含特定模式的行
# 删除所有包含 "DELETE_ME" 的行
sed '/DELETE_ME/d' file.txt
9️⃣ 处理多行文本和复杂模式
9.1 🔄 逆序文件中的行
# 使用 sed 和 tac(倒序输出)命令
tac file.txt | sed '1!G;h;$!d'
9.2 🔄 处理多行模式匹配和替换
# 将包含 "start" 和 "end" 之间的所有行替换为 "replaced"
sed '/start/,/end/c\replaced' file.txt
9.3 🔄 在多行模式中查找并替换特定模式
# 示例:查找包含 "start" 和 "end" 之间的所有行,并将其中的 "foo" 替换为 "bar"
sed '/start/,/end/{s/foo/bar/g}' file.txt
9.4 🔄 删除多行模式中的特定模式
# 示例:删除包含 "start" 和 "end" 之间的所有行中的 "foo"
sed '/start/,/end/{/foo/d}' file.txt
9.5 🗂️ 提取多行模式中的特定模式
# 示例:提取包含 "start" 和 "end" 之间的所有行中的 "foo"
sed -n '/start/,/end/{/foo/p}' file.txt
9.6 🔄 处理嵌套模式
# 示例:在包含 "outer" 和 "end" 之间的所有行中,处理包含 "inner" 和 "inner_end" 之间的模式
sed '/outer/,/end/{/inner/,/inner_end/s/foo/bar/g}' file.txt
🔟 总结
sed
是一个强大且灵活的文本处理工具,可以在不需要用户交互的情况下,对文本进行多种形式的编辑和转换。通过掌握 sed
的基本用法和高级技巧,您可以高效地处理和分析文本数据。
📚 参考资料
GNU sed 手册Sed 教程Sed 一行命令集锦
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。