文本处理工具
grep
sed(流编辑器)
awk(报告文本生成器)
sed基本用法
默认不编辑原文件,仅对模式空间中的数据处理。
sed:Stream EDitor
sed [options]'AddressCommand' file ...
-n 静默模式 不显示模式空间中的内容
-i 修改原文件
-e script -e script:可以同时指定多个脚步
-f :指定一个脚本文件
-r:表示使用扩展正则表达式
Address
1.StartLine,EndLine
比如1,100
2./RegExp/
/^root/
3./pattern1/,/pattern2/
第一次被pattern1匹配到和行开始,至第一次被pattern2匹配到结束
4.LineNumber
指定的行
$表示最后一行
5.StartyLine,+N
从startline开始,向后的N行
Command:
d:删除符合条件的行
sed '1,5d' /etc/fstab
sed '/oot/d' /etc/fstab
sed '1,+2d' /etc/fstab
sed '/^\//d' /etc/fstab 用^锚定行首的/ 需要加\转义
p:显示符合条件的行
a \string:在指定的行后面追加新行。内容为String
sed '/^\//a \#hello world\n#helo,linux' /etc/fstab
i \string:在指定的行前面追加新行。内容为String
r file:将指定的文件的内容添加至符合条件的行处
sed '2r /etc/issue' /etc/fstab
sed '$r /etc/issue' /etc/fstab 最后一行添加
w file :将指定范围内的内容另存至指定的文件中
sed '/oot/w /tmp/oot.txt' /etc/fstab
s/pattern/string/修饰符:查找并替换 ,默认只替换每行中第一次被模式匹配到的字符串
加修饰符
g:表示全局替换
i:忽略字符大小写
sed 's/^\//#/' /etc/fstab 行首的/替换为#
sed 's/\//#/g' /etc/fstab 全部/替换为#
sed 's@/@#@g' /etc/fstab /分隔符可以用@等其他字符作为分隔符
$引用模式匹配到的字符串
history | sed 's#^[[:space:]]*##g' | cut -d' ' -f1
echo "/etc/rc.d" | sed -r 's@^(/.*/)[^/]+/?@\1@g' 一个文件的父目录