Sed基础
2017-01-30 20:27
232 查看
Sed(Stream EDitor):流编辑器
工作原理:
将文件中的文本逐行取出,在内存中处理,而不是在源文件中处理;sed的加工车间有两个:pattern space和hold space;sed会根据给定的pattern去匹配每行文本,不管匹配成功或失败,默认都会将pattern space中的内容输出至标准输出,如果匹配成功再执行用户给定的编辑命令。
命令格式:
sed [OPTIONS] ... 'script' file...
其中script是地址定界编辑命令的整体
常用OPTIONS:
-n:不输出pattern space中的内容至标准输出
-e script,--expression=script:多点编辑
-f /PATH/TO/SOME/SED_SCRIPT_FILE:每行一个编辑命令
-r:支持使用扩展正则表达式(不加则使用基本正则表达式)
-i[SUFFIX],--in-place[=SUFFIX]:直接编辑源文件
地址定界:
(1)空地址[什么也不写]:匹配全文
(2)单地址:
#:指定行
/pattern/:被模式匹配到的每一行
(3)地址范围:
#,#:第#行到第#行,如1,5
#,+#:如1,+2,从第一行开始,到第三行
#,/pattern/:从#行到被pattern匹配到的行之间的行
/pattern1/,/pattern2/
$:最后一行
(4)步进:~
1~2:所有奇数行
2~2:所有偶数行
编辑命令:
d:删除模式空间(pettern space)中的内容
p:显示模式空间中的内容
a \test:在行后面追加文本‘test’,支持使用\n实现多行追加
i \test:在行前面插入文本‘test’,支持使用\n实现多行插入
c \test:把匹配到的行替换为此处指定的test
w /PATH/TO/SOMEFILE:保存模式空间中匹配到的行至指定文件中
r /PATH/FROM/SOMEFILE:读取指定文件的内容至当前文件被模式匹配到的行之后,实现文件合并
=:为模式匹配到的行打印上行号
!:条件取反,格式为:地址定界!编辑命令
s///:查找替换,其分隔符可自行定义,常用有s###,s@@@等;
替换标记:
g:全局替换
w /PATH/TO/SOMEFILE:将替换成功的结果保存至指定文件中
p:显示替换成功的行;
高级编辑命令
h:把模式空间中的内容覆盖至hold space(保持空间)中
H:把模式空间中的内容追加至hold space(保持空间)中
g:把保持空间中的内容覆盖至模式空间中
G:把保存空间中的内容追加至模式空间中
x:把两个空间中的内容互换;
n:覆盖读取匹配到的行的下一行至模式空间中;
N:追加读取匹配到的行的下一行至模式空间中;
d:删除模式空间中的行;
D:删除多行模式空间中的所有行;
工作原理:
将文件中的文本逐行取出,在内存中处理,而不是在源文件中处理;sed的加工车间有两个:pattern space和hold space;sed会根据给定的pattern去匹配每行文本,不管匹配成功或失败,默认都会将pattern space中的内容输出至标准输出,如果匹配成功再执行用户给定的编辑命令。
命令格式:
sed [OPTIONS] ... 'script' file...
其中script是地址定界编辑命令的整体
常用OPTIONS:
-n:不输出pattern space中的内容至标准输出
-e script,--expression=script:多点编辑
/*示例*/ sed -e '/^[A]/p' -e '/^[A]/d' test.txt
-f /PATH/TO/SOME/SED_SCRIPT_FILE:每行一个编辑命令
-r:支持使用扩展正则表达式(不加则使用基本正则表达式)
-i[SUFFIX],--in-place[=SUFFIX]:直接编辑源文件
/*示例*/ sed -i '/^[h]/d' test.txt
地址定界:
(1)空地址[什么也不写]:匹配全文
(2)单地址:
#:指定行
/pattern/:被模式匹配到的每一行
/*示例*/ sed -n '2p' test.txt
(3)地址范围:
#,#:第#行到第#行,如1,5
#,+#:如1,+2,从第一行开始,到第三行
#,/pattern/:从#行到被pattern匹配到的行之间的行
/pattern1/,/pattern2/
$:最后一行
(4)步进:~
1~2:所有奇数行
2~2:所有偶数行
编辑命令:
d:删除模式空间(pettern space)中的内容
p:显示模式空间中的内容
a \test:在行后面追加文本‘test’,支持使用\n实现多行追加
i \test:在行前面插入文本‘test’,支持使用\n实现多行插入
c \test:把匹配到的行替换为此处指定的test
w /PATH/TO/SOMEFILE:保存模式空间中匹配到的行至指定文件中
r /PATH/FROM/SOMEFILE:读取指定文件的内容至当前文件被模式匹配到的行之后,实现文件合并
=:为模式匹配到的行打印上行号
!:条件取反,格式为:地址定界!编辑命令
s///:查找替换,其分隔符可自行定义,常用有s###,s@@@等;
替换标记:
g:全局替换
w /PATH/TO/SOMEFILE:将替换成功的结果保存至指定文件中
p:显示替换成功的行;
/*示例*/ echo "/var/log/message" | sed 's@[^/]\+/\?$@@'
高级编辑命令
h:把模式空间中的内容覆盖至hold space(保持空间)中
H:把模式空间中的内容追加至hold space(保持空间)中
g:把保持空间中的内容覆盖至模式空间中
G:把保存空间中的内容追加至模式空间中
x:把两个空间中的内容互换;
n:覆盖读取匹配到的行的下一行至模式空间中;
N:追加读取匹配到的行的下一行至模式空间中;
d:删除模式空间中的行;
D:删除多行模式空间中的所有行;
相关文章推荐
- PAT-1022-Digital Library
- 联想Y50更换固态硬盘
- 数据结构——队列的使用
- 使用MyBatis-generator 自动生成MyBatis代码
- Js And PHP Modify Cookie
- Chrome 插件集锦😂
- UVa 1583:Digit Generator
- 深入理解 Kotlin Coroutine (一)
- 三点顺序
- POJ1251Jungle Roads(最小生成树)
- class new delete的一点理解
- QObject提供了QMetaObject元类信息(相当于RTTI和反射),信号与连接,父子关系,调试信息,属性,事件,继承关系,窗口类型,线程属性,时间器,对象名称,国际化
- CSS教程:行高line-height属性
- [Notes] 后缀自动机学习笔记
- PHP无限级分类:一棵树形成一个数组
- 格式塔在页面设计中的应用
- 新手必学!3个拍出浅景深的技巧
- 硬盘分区 整G整数法(从1g到200g最精确的整数分区)
- 中文网页设计分享之《banner设计篇》
- flowable使用