sed 及 正则表达式
2016-06-30 20:34
323 查看
一、sed基本概念
sed,流式编辑器 ,即把前一个程序输出引入到sed的输入,经过一系列编辑命令转换为另一种格式输出。默认使用Basic正则表达式规范,如若加 -r 选项则用Extended规范。
在Basic规范中,+、?、{ }、() 、| 均表示普通含义,如果要使用其特殊含义,需使用 \ 转义,在Extended规范中则相反。
sed在处理一行内容时,把当前处理的航存在临时缓冲区中(内存),称为模式空间,接着用sed命令处理模式空间的内容,处理完成后,把内容送往屏幕(但在某些时候,可以使用保持空间来暂存数据),接着不断重复处理下一行,直到文件结束。
二、sed基本使用
(1)/pattern/p:打印匹配的行
(2)/pattern/d:删除匹配到的行
注:sed命令不会修改原文件,只是表示某些行不打印输出,如果加 -i 选项就会修改原文件
(3)/pattern/s/pattern1/pattern2/:查找符合pattern的行,将该行的第一个匹配pattern1的字符串替换为pattern2
(4)/pattern/s/pattern1/pattern2/g:查找符合pattern的行,将每行匹配pattern1的字符串替换为pattern2
(5)定址
三、正则表达式
(1)^:行首定位符
(2)$:行尾定位符
(3).:匹配除换行符以外的单个字符
(4)*:匹配零个或多个前导单元
(5)[ ]:匹配指定字符组内任一字符
(6)[^]:匹配不在指定字符组内的任一字符
(7)():保存已匹配的字符,保存为标签1,可以使用 \1 来引用
(8)&:保存查找的串,以便在替换串中引用
(9)\<:词首定位符
(10)\>:词尾定位符
(11)v\{m\}:连续m个v
v\{m,\}:至少m个v
四、sed命令
g:将保持空间的内容拷贝到模式空间中
G:将保持空间的内容追加到模式空间中
h:将模式空间的内容拷贝到保持空间中
H:将模式空间的内容追加到保持空间中
d:删除模式空间中的第一行,并读入下一行
D:删除模式空间中的第一行,不读入下一行
x:交换模式空间和保持空间的内容
五、sed练习题
(1)给每一行结尾添加一行空行
(2)用sed模拟tac(倒序输出)
(3)追加匹配行到文件结尾
(4)行列转换
(5)1+...+100
(6)输出奇数偶数行
(7)1+...+100(标签方法)
注::a表示标签a,ba表示跳转到标签a,$!ba表示最后一行不用跳转到标签a。
sed,流式编辑器 ,即把前一个程序输出引入到sed的输入,经过一系列编辑命令转换为另一种格式输出。默认使用Basic正则表达式规范,如若加 -r 选项则用Extended规范。
在Basic规范中,+、?、{ }、() 、| 均表示普通含义,如果要使用其特殊含义,需使用 \ 转义,在Extended规范中则相反。
sed在处理一行内容时,把当前处理的航存在临时缓冲区中(内存),称为模式空间,接着用sed命令处理模式空间的内容,处理完成后,把内容送往屏幕(但在某些时候,可以使用保持空间来暂存数据),接着不断重复处理下一行,直到文件结束。
二、sed基本使用
(1)/pattern/p:打印匹配的行
(2)/pattern/d:删除匹配到的行
注:sed命令不会修改原文件,只是表示某些行不打印输出,如果加 -i 选项就会修改原文件
(3)/pattern/s/pattern1/pattern2/:查找符合pattern的行,将该行的第一个匹配pattern1的字符串替换为pattern2
(4)/pattern/s/pattern1/pattern2/g:查找符合pattern的行,将每行匹配pattern1的字符串替换为pattern2
(5)定址
三、正则表达式
(1)^:行首定位符
(2)$:行尾定位符
(3).:匹配除换行符以外的单个字符
(4)*:匹配零个或多个前导单元
(5)[ ]:匹配指定字符组内任一字符
(6)[^]:匹配不在指定字符组内的任一字符
(7)():保存已匹配的字符,保存为标签1,可以使用 \1 来引用
(8)&:保存查找的串,以便在替换串中引用
(9)\<:词首定位符
(10)\>:词尾定位符
(11)v\{m\}:连续m个v
v\{m,\}:至少m个v
四、sed命令
g:将保持空间的内容拷贝到模式空间中
G:将保持空间的内容追加到模式空间中
h:将模式空间的内容拷贝到保持空间中
H:将模式空间的内容追加到保持空间中
d:删除模式空间中的第一行,并读入下一行
D:删除模式空间中的第一行,不读入下一行
x:交换模式空间和保持空间的内容
五、sed练习题
(1)给每一行结尾添加一行空行
(2)用sed模拟tac(倒序输出)
(3)追加匹配行到文件结尾
(4)行列转换
(5)1+...+100
(6)输出奇数偶数行
(7)1+...+100(标签方法)
注::a表示标签a,ba表示跳转到标签a,$!ba表示最后一行不用跳转到标签a。
相关文章推荐
- Linux socket 初步
- Linux Kernel 4.0 RC5 发布!
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- Scientific Linux 5.5 图形安装教程
- Linux 下无损图片压缩小工具介绍