文本处理工具: sed (流编辑器)
――基本用法:
Sed 是个行编辑器,文本编辑器, 逐行进行
默认不编辑原文件, 仅对模式空间中的数据做处理。
――处理机制:
逐行读取, 读取到内存空间中(模式空间,符合模式空间的话),
在内存中完成,之后显示在屏幕sed
内存空间:sed的模式空间(和模式条件匹配,匹配的使用后面的编辑命令进行编辑)
使用语法:
Sed (选项)‘Addresscommand’ (修饰) FILE……
选项:
-n ,静默模式, 只跟命令相关,不再默认显示模式空间的内容
-i 直接修改
-e 脚本 –e 脚本; 可执行多个脚本。
-r 表示到 扩展正则表达式
―――――Address:――――――――
1,指定起始行 和结束行,用逗号隔开
例子 :sed ‘1,2’
2, 使用模式 (正则表达式) /Regexp/
例子: sed ‘/^root/’
3, /pattern1/,/pattern2/
第一次被模式1匹配到的行开始,到被pattern2匹配到的行结束
4,Linenumber 只跟一个数值,
指定的行
5,$ 指定最后的一行 $-1 倒数第二行
6,指定行 +N
从制定行开始 先后N行, 总共N+1行。
――――――Command ――――――――
(如果有变量和变量替换的话,用双引号“”)
d: 删除符合条件的行;
例子:
#Sed ‘1,2d’ 、etc/fstab
p : 显示符合条件的行,
例子:
#Sed ‘1,2d’ 、etc/fstab
a \string ,在行后面追加新行,内容为“string”
例子:
Sed’/^\//a’\#hello word\n#hello word’ /etc/fstab
i \string : 在指定的行前面添加新行。内容为“string”
r FILE : 将指定的文件的内容添加至符合条件的行处。
例子:
Sed ‘2r’ /etc/fstab /etc/inittab
将fstabde 内容添至 inittab下的第二行之后。
w : 将指定范围内的行另存至指定的文件中
从文件中抽出符合的行, 存之另一个文件中
例子:
Sed ‘/root/w /tmp/out.txt’ /etc/fstab
s/查找的内容/替换的内容/ : 查找并提出
s/ / /
例子:
Sed –n ‘s/oot/OOT/’ /etc/fstab
g 全局替换 i 忽略字符大小写
和原字符冲突的时候, 需要加反斜线,
分隔符只要一样都行可以用@@ #### 代替 /, 例如 s### s@@@
例子:sed 's/oot/OOT/g' /etc/fstab
sed 's@/@#@g' /etc