📜  sed 两种模式 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:20:03.390000             🧑  作者: Mango

sed 两种模式

sed 是 Linux 上一个非常强大的文本处理工具,可以进行替换、删除、插入、打印等操作。在使用 sed 时,需要指定不同的模式,以实现不同的处理目的。

本文将介绍 sed 的两种模式:行模式和流模式。

行模式

行模式是 sed 的默认模式,它按行逐一处理文本。我们可以使用以下命令来在行模式下进行操作:

  • 替换文本:sed 's/old/new/g' FILENAME

    该命令将文本中所有的 old 替换为 new

    示例:

    sed 's/boy/girl/g' test.txt

    
    输出:
    
    

    This is a test file. A girl is talking to a girl. A boy is playing with a toy.

    
    
  • 删除行:sed '1d' FILENAME

    该命令将文本的第一行删除。

    示例:

    sed '1d' test.txt

    
    输出:
    
    

    A girl is talking to a boy. A boy is playing with a toy.

    
    
  • 插入文本:sed '1i\INSERTED TEXT' FILENAME

    该命令将指定的文本插入到文本的第一行前面。

    示例:

    sed '1i\This is a new line.' test.txt

    
    输出:
    
    

    This is a new line. This is a test file. A girl is talking to a boy. A boy is playing with a toy.

    
    
流模式

流模式则是将整个文本看做一条数据流,以此进行操作。我们可以使用以下命令在流模式下进行操作:

  • 替换文本:sed 's/old/new/g'

    该命令可以通过管道符 | 将其与其他命令结合使用,以实现替换的操作。

    示例:

    cat test.txt | sed 's/boy/girl/g'

    
    输出:
    
    

    This is a test file. A girl is talking to a girl. A girl is playing with a toy.

    
    
  • 删除行:sed '1d'

    该命令可以通过管道符 | 将其与其他命令结合使用,以实现删除的操作。

    示例:

    cat test.txt | sed '1d'

    
    输出:
    
    

    A girl is talking to a boy. A boy is playing with a toy.

    
    
  • 插入文本:sed '1i\INSERTED TEXT'

    该命令可以通过管道符 | 将其与其他命令结合使用,以实现插入的操作。

    示例:

    cat test.txt | sed '1i\This is a new line.'

    
    输出:
    
    

    This is a new line. This is a test file. A girl is talking to a boy. A boy is playing with a toy.

    
    
总结

sed 的行模式和流模式都非常有用,可以帮助我们快速、方便地处理文本。通过阅读本文,您应该已经了解了 sed 两种模式的基本用法,并能够在实际操作中正确地应用它们。