sed是linux下经常用到的工具,英文全名为stream editor。
sed 在windows上的实现可以在这里找到 http://gnuwin32.sourceforge.net/packages/sed.htm 。
特别注意,Windows下使用sed不能用单引号将命令参数包含起来!
支持正则表达式!
1、对每一行中替换被匹配的字符串
cat text.txt | sed 's/pattern/replacestr/' #对每行只操作一次
cat text.txt | sed 's/pattern/replacestr/g' #对每行中所有匹配都执行一次。
sed 's/pattern/replacestr/' test.txt
sed 's/pattern/replacestr/g' test.txt
sed -i 's/pattern/replacestr/' test.txt
sed -i 's/pattern/replacestr/g' test.txt
s是替换命令的选项,g是s命令的参数。-i是sed的命令选项,指定用修改后的文件覆盖原始文件,如果-i紧跟着一个后缀,那么原文件会被备份,例如-i.back。
2、删除
find ./ -regex .*\.txt | xargs -I {} sed -i '4d' {} # 将当前目录下所有txt文件中第四行删除。删除指定行之后,后面的行向前移动一行。
sed '1~2d' test.txt #从第一行开始每隔2行删除一次。
sed '1,10d' test.txt # 删除1到10行
sed '$d' test.txt #删除最后一行
sed '/\<exp\>/d' test.txt # 将匹配行删除
sed '/exp/,$d' test.txt #从匹配行删除到最后一行