sed

批量替换

  • 在一个文件中替换字符串
    • sed -i "s/original_str/replace_str/g" filename可查找filename中的original_str替换成replace_str
    • filename可用通配符
  • 在一个文件夹中替换字符串
    • 批量查找文件夹中的文件grep "original_str" -rl dirname
    • 批量替换文件sed -i s/original_str/replace_str/g `grep "original_str" -rl dirname`
    • 遍历当前文件夹所有文件find ./ -type f
    • 批量替换当前文件夹下所有文件的字符串sed -i s/original_str/replace_str/g `find ./ type f`
  • 批量替换文件、文件夹名字
    • 查找文件名find ./ -name original_str*
    • 替换输出find ./ -name original_str* | sed 's/\(.*\)\(original_str\)\(.*\)/mv \1\2\3 \replace_str\3/' | sh
      • 文件夹查找文件,将文件名转换为mv orifile newfile模式,最后应用管道命令
    • 查找文件夹find ./ -name original_str* -type d
    • 替换输出find ./ -name original_str* -type d | sed 's/\(.*\)\(original_str\)\(.*\)/mv \1\2\3 \replace_str\3/' | sh
      • 文件夹查找文件,将文件夹名转换为mv orifile newfile模式,最后应用管道命令

按行删除

  • 不加-i打印删除之后的文本内容,并没有真正删除文件文本内容;加-i不打印,但是会真正删除对应内容
    • sed nd filename删除第n
    • sed n~md filename从第n行开始,每隔m-1行删除
    • sed m,nd filename删除第m行到第n
    • sed 'm,n'd filename
    • sed 'm,nd' filename
    • sed '$'d filename删除最后一行
    • sed '$d' filename
    • sed /pattern/d filename删除匹配pattern所在行
    • sed '/pattern/d' filename
    • sed '/pattern/'d filename
    • sed '/pattern/,+2d' filename删除匹配pattern所在行和之后m
    • sed '/pattern/,+2'd filename
    • sed '/^$/d' filename删除空行

相关