linux 三大文本处理工具 grep sed awk
之前有说过grep 今天来看看sed命令
简介
sed (Stream EDitor)流编辑器,是非交互式的编辑器,它一次处理一行内容。而且此编辑器默认不会对原文件做修改,如果想要修改使用shell重定向保存结果。默认情况下,所有的输出行都会被打印在屏幕上。
sed 编辑器逐行处理文件(或输入),并将结果发送到屏幕上。处理过程如下:
首先sed 把当前正在处理的行保存在一个临时的缓冲区中(也称为模式空间pattern space),然后处理临时缓冲区中的行,完成后把该行发送到屏幕上。 sed 每处理完一行就将其缓冲区删除,然后将下一行读入,进行处理和显示。处理完输入文件的最后一行后,sed便运行结束。sed 每一行都存在临时缓冲区中,对这个副本进行编辑,所以不会修改原文件。
sed 基本格式
sed [option] "AddressCommand" file
Address
大义是指定该文件中的哪一行或者被定位到的行,支持正规则表达式,数字。如果没有指定行,则默认为处理所有行。
- startlike,endline 例
1,100 则定位到文本中的第一行到100行
$ 表示最后一行
$-1 表示倒数第二行
2. /RegExp/ 中间是正规则表达式 例
/^root/ 匹配以root开头的行
3. /pattern/,/pattern2/ 匹配从第一次被pattern1匹配到的行,到第一次被pattern2匹配到的行结束这中间的所有行
4. LineNumber 只给一个数字,则精确匹配到该行
5. startline,+N N是数字 表示从startline 行开始向后匹配N行。
Command
这个是对前边所匹配到的行做字处理 ,比如删除,修改,替换等等
d 删除符合条件的行
a \"string" 可不加引号, 在符合条件的行的后面追加新行,内容为string. \n 是换行符
i \"string" 可不加引号, 在符合条件的行的前面追加新行,内容为string. string 的意思是这个地方你输出什么,则为该行后边添加什么。
p 显示符合条件的行,默认情况下会使符合的行数显示两次(这个是因为patter space的原因)
[option]
这个是可选选项,即可用也可以不用这个选项
-n 静默模式,不再默认显示模式空间中的内容。