我有一个大约400mb的电子邮件转储。我想将其拆分为.txt文件,每个文件中包含一封邮件。每封电子邮件均以指定文档类型的标准HTML标头开头。
这意味着我将不得不根据上述标题拆分文件。我如何在Linux中进行操作?
如果你有一个 mail.txt
mail.txt
$ cat mail.txt <html> mail A </html> <html> mail B </html> <html> mail C </html>
跑来csplit分裂<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
$ awk '/<html>/{filename=NR".txt"}; {print >filename}' mail.txt $ ls 1.txt 5.txt 9.txt mail.txt