小编典典

根据内容在linux中拆分文件

linux

我有一个大约400mb的电子邮件转储。我想将其拆分为.txt文件,每个文件中包含一封邮件。每封电子邮件均以指定文档类型的标准HTML标头开头。

这意味着我将不得不根据上述标题拆分文件。我如何在Linux中进行操作?


阅读 460

收藏
2020-06-03

共1个答案

小编典典

如果你有一个 mail.txt

$ cat mail.txt
<html>
    mail A
</html>

<html>
    mail B
</html>

<html>
    mail C
</html>

跑来csplit分裂<html>

$ csplit mail.txt '/^<html>$/' '{*}'

 - mail.txt    => input file
 - /^<html>$/  => pattern match every `<html>` line
 - {*}         => repeat the previous pattern as many times as possible

检查输出

$ ls
mail.txt  xx00  xx01  xx02  xx03

如果你想这样做 awk

$ awk '/<html>/{filename=NR".txt"}; {print >filename}' mail.txt
$ ls
1.txt  5.txt  9.txt  mail.txt
2020-06-03