Linux sed 命令,流编辑文本文件

Sed 是一个流编辑器,它能够读取文本文件、对数据进行转换,并将结果写入到输出。Sed 是一个强大的工具,适用于各种文本处理任务,如替换、插入、删除和选择文本。

基本概念与使用方法

基本命令格式

Sed 命令的基本格式如下:

读取与写入

  • -n:静默模式,仅在执行某些特定操作时输出。
  • -i:直接修改文件内容,而不是输出到标准输出。
  • r file:从指定文件中读取额外的行并追加到当前输入缓冲区中。
  • w file:将输出写入到指定文件中。

示例

该命令会打印出所有匹配 "pattern" 的行。

替换命令

基本替换

  • s/原字符串/新字符串/:替换字符串。
  • s/原字符串/新字符串/g:全局替换,即替换每一处出现的原字符串。

示例

这将把文件中的每一个 "old" 替换成 "new"。

使用正则表达式

Sed 支持正则表达式来定义匹配规则。

这将把文件中所有的小写字母替换为 "X"。

插入与追加

插入

  • i:在匹配行之前插入一行。
  • c:替换匹配行的内容。

示例

这将在匹配 "pattern" 的行前插入一行 "New line before"。

追加

  • a:在匹配行之后追加一行。

这将在匹配 "pattern" 的行后追加一行 "New line after"。

删除命令

基本删除

  • d:删除匹配的行。

示例

这将删除文件中所有匹配 "pattern" 的行。

范围删除

  • 3,5d:删除第 3 到第 5 行。
  • 3,$d:删除从第 3 行到最后一行。

示例

这将删除文件中第 3 到第 5 行的内容。

流控制

条件分支

  • b label:跳转到标签。
  • t label:如果最近的替换成功,则跳转到标签。

示例

这将在匹配 "pattern" 的行中替换 "old" 为 "new" 并跳过后续命令。

更多高级用法

多次替换

可以使用多个替换命令,用分号隔开。

这将依次替换 "old" 为 "new" 和 "another" 为 "other"。

脚本文件

可以将一系列 sed 命令写入一个脚本文件,然后通过 -f 参数执行。

示例

假设 scriptfile 内容如下:

那么上述命令将按顺序执行这些替换命令。

总结

Sed 是一个功能强大且灵活的文本处理工具,适用于多种场景,从简单的替换到复杂的文本流控制。掌握 Sed 可以显著提高你的文本处理效率。

上一篇: rmdir 命令
下一篇: vi 命令
纠错
反馈