【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 ➕ 插入和追加文本 (ia)

在特定行前插入或在特定行后追加文本:

# 在第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 一行命令集锦



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。