Linux-sed

Linux-sed

起男 41 2025-03-04

Linux-sed

sed(Stream Editor)是 Linux 和 Unix 系统中一个强大的流编辑器,用于对文本进行替换、删除、插入等操作。它支持正则表达式,可以批量处理文本。

基本语法

sed [选项] '命令' 文件名
  • 选项:控制 sed 的行为。
  • 命令:指定对文本执行的操作。
  • 文件名:要处理的文件。

常用选项

选项 描述
-n 只输出处理过的行。
-e 指定多个命令。
-f 从文件中读取 sed 命令。
-i 直接修改文件内容(慎用)。
-r 使用扩展正则表达式。

常用命令

命令 描述
s 替换文本。
d 删除行。
p 打印行。
i 在指定行前插入文本。
a 在指定行后追加文本。
c 替换指定行的内容。

示例

替换

  • 将文件中的 old 替换为 new

    sed 's/old/new/g' file.txt
    
    • s:替换命令。
    • g:全局替换(替换所有匹配项)。
  • 只替换每行的第一个匹配项:

    sed 's/old/new/' file.txt
    
  • 替换第 2 行的 oldnew

    sed '2s/old/new/' file.txt
    

删除

  • 删除包含 error 的行:

    sed '/error/d' file.txt
    
  • 删除第 3 行:

    sed '3d' file.txt
    
  • 删除第 2 到第 4 行:

    sed '2,4d' file.txt
    

打印

  • 打印包含 error 的行:

    sed -n '/error/p' file.txt
    
  • 打印第 5 行:

    sed -n '5p' file.txt
    

插入和追加

  • 在第 3 行插入 new line

    sed '3i\new line' file.txt
    
  • 在第 3 行追加 new line

    sed '3a\new line' file.txt
    

替换

  • 将第 3 行替换为 new line

    sed '3c\new line' file.txt
    

修改原文件

  • 将文件中的 old 替换为 new,并直接修改文件:

    sed -i 's/old/new/g' file.txt
    

使用正则

  • 使用扩展正则表达式替换 oldnew

    sed -r 's/(old)/\1 new/g' file.txt
    

多命令指向

  • 替换 oldnew,并删除包含 error 的行:

    sed -e 's/old/new/g' -e '/error/d' file.txt
    

从文件读取命令

  • commands.sed 文件中读取命令并执行:

    sed -f commands.sed file.txt