sed.png

{message type="info" content="在Linux系统中,文本处理是日常工作的重要组成部分。Linux文本三剑客包括grep、awk和sed,分别负责查找、处理和编辑文本。本文将重点介绍sed,这个功能强大、使用便捷的文本编辑工具"/}

sed概述

sed,全称为"stream editor",意为流式编辑器。它是一个用于处理文本数据的非交互式命令行工具。sed可以读取文本数据,对其进行编辑和转换,然后将结果输出到标准输出或文件中。sed通过编写简洁的脚本,实现批量、自动化的文本处理。
sed处理方式

sed基本语法

sed的基本语法如下:
sed [option]... 'script;script;...' [inputfile...]

常用选项

-n 不输出模式空间内容到屏幕,即不自动打印
-e 多点编辑
-f FILE 从指定文件中读取编辑脚本
-r, -E 使用扩展正则表达式
-i.bak 备份文件并原处编辑
-s           将多个文件视为独立文件,而不是单个连续的长文件流
#说明:
-ir   不支持
-i -r 支持
-ri   支持
-ni   危险选项,会清空文件

script 格式

'地址命令'

地址格式

1. 不给地址:对全文进行处理
2. 单地址:
   #:指定的行,$:最后一行
   /pattern/:被此处模式所能够匹配到的每一行
3. 地址范围:
   #,#     #从#行到第#行,3,6 从第3行到第6行
   #,+#   #从#行到+#行,3,+4 表示从3行到第7行
   /pat1/,/pat2/
   #,/pat/
   /pat/,#
4. 步进:~
     1~2 奇数行
     2~2 偶数行

命令

p 打印当前模式空间内容,追加到默认输出之后
Ip 忽略大小写输出
d 删除模式空间匹配的行,并立即启用下一轮循环
a [\]text 在指定行后面追加文本,支持使用\n实现多行追加
i [\]text 在行前面插入文本
c [\]text 替换行为单行或多行文本
w file 保存模式匹配的行至指定文件
r file 读取指定文件的文本至模式空间中匹配到的行后
= 为模式空间中的行打印行号
! 模式空间中匹配行取反处理
q           结束或退出sed

查找替代

s/pattern/string/修饰符 查找替换,支持使用其它分隔符,可以是其它形式:s@@@,s###
替换修饰符:
g 行内全局替换
p 显示替换成功的行
w   /PATH/FILE 将替换成功的行保存至文件中
I,i   忽略大小写` 
## 常用sed操作
### 文本替换
使用's'命令进行替换操作:
 `sed 's/原字符串/替换字符串/' 文件名

删除行

使用'd'命令进行删除操作:
sed '行号d' 文件名

插入文本

使用'i'命令进行插入操作:
sed '行号i\插入的文本' 文件名

追加文本

使用'a'命令进行追加操作:
sed '行号a\追加的文本' 文件名

sed实例

替换文本中的特定字符串
sed 's/old/new/' input.txt > output.txt
删除文本中的空白行
sed '/^$/d' input.txt > output.txt
在特定行后追加文本
sed '3a\This is a new line.' input.txt > output.txt

分类: Linux命令 标签: linux

评论

暂无评论数据

暂无评论数据

目录