<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Sed :: Ay Docs</title>
    <link>https://ops.docs.72602.space/linux/command/sed/index.html</link>
    <description>sed（Stream Editor）是 Linux 中强大的流编辑器，用于对文本进行过滤和转换。以下是 sed 命令的常见用法：&#xA;基本语法 sed [选项] &#39;命令&#39; 文件 sed [选项] -e &#39;命令1&#39; -e &#39;命令2&#39; 文件 sed [选项] -f 脚本文件 文件 常用选项 1. 基础选项 # 编辑文件并备份原文件 sed -i.bak &#39;s/old/new/g&#39; file.txt # 直接修改文件（无备份） sed -i &#39;s/old/new/g&#39; file.txt # 只打印匹配的行 sed -n &#39;命令&#39; file.txt # 使用扩展正则表达式 sed -E &#39;命令&#39; file.txt 文本替换 1. 基本替换 # 替换每行第一个匹配 sed &#39;s/old/new/&#39; file.txt # 替换所有匹配（全局替换） sed &#39;s/old/new/g&#39; file.txt # 替换第N次出现的匹配 sed &#39;s/old/new/2&#39; file.txt # 替换第二次出现 # 只替换匹配的行 sed &#39;/pattern/s/old/new/g&#39; file.txt 2. 替换分隔符 # 当模式包含斜杠时，可以使用其他分隔符 sed &#39;s|/usr/local|/opt|g&#39; file.txt sed &#39;s#old#new#g&#39; file.txt 3. 引用和转义 # 使用&amp;引用匹配的整个文本 sed &#39;s/[0-9]*/[&amp;]/g&#39; file.txt # 使用分组引用 sed &#39;s/\([a-z]*\) \([a-z]*\)/\2 \1/&#39; file.txt sed -E &#39;s/([a-z]*) ([a-z]*)/\2 \1/&#39; file.txt # 扩展正则表达式 行操作 1. 行寻址 # 指定行号 sed &#39;5s/old/new/&#39; file.txt # 只对第5行替换 sed &#39;1,5s/old/new/g&#39; file.txt # 1-5行替换 sed &#39;5,$s/old/new/g&#39; file.txt # 第5行到最后一行 # 使用正则表达式匹配行 sed &#39;/^#/s/old/new/&#39; file.txt # 只对以#开头的行 sed &#39;/start/,/end/s/old/new/g&#39; file.txt # 从start到end的行 2. 删除行 # 删除空行 sed &#39;/^$/d&#39; file.txt # 删除注释行 sed &#39;/^#/d&#39; file.txt # 删除特定行号 sed &#39;5d&#39; file.txt # 删除第5行 sed &#39;1,5d&#39; file.txt # 删除1-5行 sed &#39;/pattern/d&#39; file.txt # 删除匹配模式的行 3. 插入和添加 # 在指定行前插入 sed &#39;5i\插入的内容&#39; file.txt # 在指定行后添加 sed &#39;5a\添加的内容&#39; file.txt # 在文件开头插入 sed &#39;1i\开头内容&#39; file.txt # 在文件末尾添加 sed &#39;$a\结尾内容&#39; file.txt 4. 修改行 # 替换整行 sed &#39;5c\新的行内容&#39; file.txt # 替换匹配模式的行 sed &#39;/pattern/c\新的行内容&#39; file.txt 高级操作 1. 打印控制 # 只打印匹配的行（类似grep） sed -n &#39;/pattern/p&#39; file.txt # 打印行号 sed -n &#39;/pattern/=&#39; file.txt # 同时打印行号和内容 sed -n &#39;/pattern/{=;p}&#39; file.txt 2. 多重命令 # 使用分号分隔多个命令 sed &#39;s/old/new/g; s/foo/bar/g&#39; file.txt # 使用-e选项 sed -e &#39;s/old/new/&#39; -e &#39;s/foo/bar/&#39; file.txt # 对同一行执行多个操作 sed &#39;/pattern/{s/old/new/; s/foo/bar/}&#39; file.txt 3. 文件操作 # 读取文件并插入 sed &#39;/pattern/r otherfile.txt&#39; file.txt # 将匹配行写入文件 sed &#39;/pattern/w output.txt&#39; file.txt 4. 保持空间操作 # 模式空间与保持空间交换 sed &#39;1!G;h;$!d&#39; file.txt # 反转文件行顺序 # 复制到保持空间 sed &#39;/pattern/h&#39; file.txt # 从保持空间取回 sed &#39;/pattern/g&#39; file.txt 实用示例 1. 配置文件修改 # 修改SSH端口 sed -i &#39;s/^#Port 22/Port 2222/&#39; /etc/ssh/sshd_config # 启用root登录 sed -i &#39;s/^#PermitRootLogin yes/PermitRootLogin yes/&#39; /etc/ssh/sshd_config # 注释掉某行 sed -i &#39;/pattern/s/^/#/&#39; file.txt # 取消注释 sed -i &#39;/pattern/s/^#//&#39; file.txt 2. 日志处理 # 提取时间戳 sed -n &#39;s/.*\([0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}\).*/\1/p&#39; logfile # 删除空白字符 sed &#39;s/^[ \t]*//;s/[ \t]*$//&#39; file.txt 3. 文本格式化 # 每行末尾添加逗号 sed &#39;s/$/,/&#39; file.txt # 合并连续空行 sed &#39;/^$/{N;/^\n$/D}&#39; file.txt # 在每行前添加行号 sed = file.txt | sed &#39;N;s/\n/\t/&#39; 4. 数据转换 # CSV转TSV sed &#39;s/,/\t/g&#39; data.csv # 转换日期格式 sed -E &#39;s/([0-9]{4})-([0-9]{2})-([0-9]{2})/\3\/\2\/\1/g&#39; dates.txt # URL编码解码（简单版本） echo &#34;hello world&#34; | sed &#39;s/ /%20/g&#39; 5. 脚本文件使用 # 创建sed脚本 cat &gt; script.sed &lt;&lt; EOF s/old/new/g /^#/d /^$/d EOF # 使用脚本文件 sed -f script.sed file.txt 常用组合技巧 1. 与管道配合 # 查找并替换 grep &#34;pattern&#34; file.txt | sed &#39;s/old/new/g&#39; # 处理命令输出 ls -l | sed -n &#39;2,$p&#39; | awk &#39;{print $9}&#39; 2. 复杂文本处理 # 提取XML/HTML标签内容 sed -n &#39;s/.*&lt;title&gt;\(.*\)&lt;\/title&gt;.*/\1/p&#39; file.html # 处理配置文件段落的示例 sed -n &#39;/^\[database\]/,/^\[/p&#39; config.ini | sed &#39;/^\[/d&#39; 这些 sed 命令用法涵盖了大多数日常文本处理需求，掌握它们可以高效地进行批量文本编辑和转换操作。</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate></lastBuildDate>
    <atom:link href="https://ops.docs.72602.space/linux/command/sed/index.xml" rel="self" type="application/rss+xml" />
  </channel>
</rss>