grep: awk: sed:流编辑器 String EDitor
逐行处理文本
行编辑器 (全屏编辑器 vi)
sed: 文件 逐行---模式空间 副本---屏幕;即默认不编辑源文件,仅对模式空间中的副本进行处理;而后,处理结束后将模式空间的内容进行打印。
sed [OPTION]... {script-only-if-no-other-script} [input-file]...
sed [options] AddressCommond file...
(Address与Commond中间无空格)
-n:静默模式(不再默认显示模式空间中的行,只与命令相关)
-i:直接修改源文件
-e SCRIPT -e SCRIPT 同时进行多个脚本操作
-f /PATH/TO/SED_SCRIPT
sed -f /path/to/sed_script file
用保存在script中的脚本处理file
Address:
1.Stratline Endline (1, 100); $: 最后一行;
2./RegExp/
/^root/ 以root起始的行
- /Pattern1/, /Pattern2/:
第一次被pattern1匹配到的行开始,至第一次被pattern2匹配到的行结束,这中间的所有行。
4.Linenumber 精确某行,特定的某行
5.Startline, +n
从指定的行开始,向后n行
Commond
- d: 删除符合条件的行
sed '1,2d' /etc/fstab
sed '/oot/'d /etc/fstab
sed '1,+2d' /etc/fstab
sed '/^\//d' /etc/fstab
(删除以斜线开始的行,‘\’转义符号) - p: 显示符合条件的行
-
a \'string'
: 在指定的行后新加行,内容为‘string’
sed '/^\//a \#hello world' /etc/fstab
sed '/^\//a \#hello world\n# hello linux' /etc/fstab
继续追加一行,\n
换行符 -
i \'string'
: 在指定的行前面添加新行,内容为‘string’ - r FILE:将指定的文件的内容添加至符合条件的行处
sed '$r /etc/issue' /etc/fstab
- w FILE 将指定范围内的文件内容另存至指定文件中
sed -n '/oot/w /tmp/oot.txt' /etc/fstab
-
s '/pattern/string/' /etc/fstab
查找并替换(查找字符串可使用正则表达式,后面的string中不可以使用正则表达式)默认替换的是每一行中被模式匹配到的字符串
1.g: 全局替换s '/pattern/string/修饰符' /etc/fstab
2.i: 查找时忽略字符大小写
s /// s### s@@@
-
\(n\), \1, \2
l..e: like---liker love---lover
sed 's#l..e#&r#g' /sed.txt
&
代指前面的内容,引用模式匹配到的所有字符串
后向引用:sed 's#\(l..e\)#\1r#g' sed.txt
只能使用后向引用:
like ---> Like
love ---> Love
sed 's#l\(..e\)#L\1#g' sed.txt
网友评论