Linux学习笔记13——sed基本用法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux学习笔记13——sed基本用法相关的知识,希望对你有一定的参考价值。
三大基本文本处理工具:grep,sed(流编辑器),awk
sed: Stream EDitor
行编辑器:sed
全屏编辑器:vi
sed: 模式空间
默认不编辑文件本身,仅对模式空间中的数据做处理;而后,处理结束后,将模式空间打印至屏幕;
sed [options] ‘AddressCommand‘ file ...(对这些文件中的符合这个地址address指定范围内的行,执行以下命令编辑)
-n: 静默模式,不再默认显示模式空间中的内容
-i: 直接修改原文件(这个要注意!!!!!!)
-e SCRIPT -e SCRIPT:可以同时执行多个操作(脚本)
-f /PATH/TO/SED_SCRIPT 可以把需要执行的多个操作写在一个脚本文件中,执行的时候一行一行的执行脚本中的每一行,就相当于-e 脚本文件第一行 -e 脚本文件第二行。
sed -f /path/to/scripts file
-f 指定文件路径 需要执行的文件
-r: 表示使用扩展正则表达式,默认只使用基本正则表达式。
Address地址:(地址如何表示,如果不写就表示查找全文)
1、StartLine,EndLine
比如1,100
$:最后一行,$-1:最后第二行
2、/RegExp/(就是正则表达式的模式)
“/^root/”:以root字符串开始的行
3、/pattern1/,/pattern2/(/模式1/,/模式2/)
第一次被pattern1匹配到的行开始,至第一次被pattern2匹配到的行结束,这中间的所有行
4、LineNumber (只给一个数值)
指定的行
5、StartLine, +N
从startLine开始,向后的N行;
Command:一下的指定范围都是通过address指定的
d: 删除符合条件的行;
p: 显示符合条件的行(默认显示匹配到的行两次以及没被匹配到的一次,因为sed的默认模式是打印模式空间,可以用-n选项只显示匹配到的一次);
a \string: 在指定的行后面追加新行,内容为string
\n:可以用于换行,可以和a \string i \string和用追加多行。
i \string: 在指定的行前面添加新行,内容为string
r FILE: 将指定的文件的内容添加至符合条件的行处
w FILE: 将地址指定的范围内的行另存至指定的文件中;
s/pattern/string/ 修饰符: 查找并替换,默认只替换每行中第一次被模式(正则表达式)匹配到的字符串。
如果希望没行中被模式(正则表达式)匹配到的字符串都替换那么需要加修饰符
g: 全局替换
i: 忽略字符大小写
s///完全可以用三个相同的符号做替换:s###, [email protected]@@
如何将一个文件中的单词替换成另一个单词:like-->liker love-->lover
sed "s#l..e#l..er#g" ./sed.txt 不能这么使用因为s/pattern/string/ 第二个不匹配正则表达式。
那么就用到了这个符号 &: 引用模式匹配整个串
sed "s#l..e#&r#g" ./sed.txt
同时也可以用正则表达式中的后向引用: (), \1, \2
sed "s#(\l..e)#\1r#g" ./sed.txt
如果这样改呢?like-->Like love-->Love
就只能使用后向引用:sed "s#l(..e)#\L\1#g" ./sed.txt
以上是关于Linux学习笔记13——sed基本用法的主要内容,如果未能解决你的问题,请参考以下文章