sed 命令

sed(全称Stream Editor)是一种强大的文本处理工具,主要用于在Linux环境中对文本文件进行查找、替换、插入和删除操作。它逐行读取文件内容,将当前处理的行存储在临时缓冲区中(称为“模式空间”),然后对缓冲区中的内容执行指定的编辑命令,最后将处理结果输出到屏幕或保存到文件中。

基本语法

sed的基本语法如下:

sed [options] 'command' file
  • options:可选参数,用于控制sed的行为,例如是否直接修改文件、是否输出所有行等。

  • command:要执行的编辑命令。

  • file:要处理的文件名。如果不指定文件名,sed将从标准输入读取数据。

常用命令

  1. 文本替换
  • s/old/new/:将第一个匹配到的old替换为new

  • s/old/new/g:将所有匹配到的old替换为new

  • s/old/new/i:替换时不区分大小写。

  1. 删除文本行
  • d:删除当前行。

  • 2d:删除第2行。

  • 5,10d:删除第5行到第10行。

  • /pattern/d:删除包含指定模式的行。

  1. 追加文本
  • /pattern/a\new text:在匹配到的模式后追加一行文本。
  1. 插入文本
  • /pattern/i\new text:在匹配到的模式前插入一行文本。
  1. 替换指定行的内容
  • c\new content:替换当前行内容为new content

示例

  1. 替换所有Linux为Unix
    sed 's/Linux/Unix/g' file.txt
    ```

2. **删除包含root的行** <b class="card40_249__sup_a7f6" data-sup="sup">5</b>

sed '/root/d' /etc/passwd
```
  1. 在匹配到的文本后追加一行文本
    sed '/Linux/a\This is added text' file.txt
    ```

4. **直接修改文件内容** <b class="card40_249__sup_a7f6" data-sup="sup">3</b>

sed -i 's/old/new/g' file.txt
```
  1. 使用脚本文件进行多行编辑
    sed -f script.sed file.txt
    ```

### 注意事项

- 默认情况下,sed不会修改原文件内容,除非使用`-i`选项。

- 使用扩展正则表达式时,需要使用`-r`选项<b class="card40_249__sup_a7f6" data-sup="sup">2</b>。

- 通过管道传递输入流时,可以使用`echo "text" | sed 'command'`。

sed是一个功能强大的文本处理工具,适合处理各种文本编辑任务<b class="card40_249__sup_a7f6" data-sup="sup">1</b>。通过熟练掌握其基本语法和常用命令,可以大大提高文本处理的效率<b class="card40_249__sup_a7f6" data-sup="sup">7</b>。
Top