📜  sed 删除包含的行 - Shell-Bash (1)

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

以'sed 删除包含的行 - Shell-Bash

sed是一种流编辑器,可以通过一连串的命令来处理输入流并生成输出流。其中,一个常见的应用场景是使用sed删除文件中的某些行。

语法

sed命令的基本语法如下:

sed '[选项]... <script> [文件]...`

其中,[选项]用于指定sed的一些参数,<script>用于指定sed的命令脚本,[文件]则表示要处理的文件列表。当<script>未指定时,默认将每行输入视为命令脚本。

删除包含特定内容的行

要删除文件中包含特定内容的行,可以使用sed的删除命令d

首先,假设我们有一个文件test.txt,其中包含以下内容:

$ cat test.txt
apple
banana
orange
grape
pear

现在,我们想要删除这个文件中包含单词orange的行。可以使用以下命令:

sed '/orange/d' test.txt

该命令中,/orange/是一个模式匹配符,表示匹配包含单词orange的行。d是删除命令,表示删除匹配的行。

执行以上命令后,将得到以下输出:

$ sed '/orange/d' test.txt
apple
banana
grape
pear

可以看到,原文件中包含单词orange的行已被删除。

细节说明
  • sed默认是按行处理输入流的,即每次读取一行,然后执行相关命令。

  • sed会将处理过的内容输出到标准输出,如果希望将结果写入到文件中,需要重定向输出流。例如,将结果写入新文件:

    sed '/orange/d' test.txt > newfile.txt
    
  • sed支持多条命令,可以通过;将多个命令串连起来执行。例如,同时删除包含单词orangepear的行:

    sed '/orange/d; /pear/d' test.txt
    
  • sed支持正则表达式,可以使用正则表达式来更精确地匹配文件中的内容。例如,使用\b表示单词边界,匹配仅包含单词orange的行:

    sed '/\borange\b/d' test.txt
    

    注意,\b前后需要加上转义符\,否则会被解释为退格符。

  • sed还有很多其它高级用法,例如替换、插入、追加、转换等,可以通过参考sed的官方文档进行学习。

参考链接