Linux 文本三剑客之sed
{message type="info" content="在Linux系统中,文本处理是日常工作的重要组成部分。Linux文本三剑客包括grep、awk和sed,分别负责查找、处理和编辑文本。本文将重点介绍sed,这个功能强大、使用便捷的文本编辑工具"/}
sed概述
sed,全称为"stream editor",意为流式编辑器。它是一个用于处理文本数据的非交互式命令行工具。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
版权申明
本文系作者 @亦秋先生 原创发布在亦秋先生博客站点。未经许可,禁止转载。
暂无评论数据