如何根据内容将文本文件拆分为多个文本文件?

use*_*998 4 text-processing

我有一个名为 CAMS.txt 的文本文件,其中包含以下内容:

4153999999999991
4153999999999992
4153999999999993
4153999999999994
4801999999999991
4801999999999992
4801999999999993
Run Code Online (Sandbox Code Playgroud)

我想将 CAMS.txt 文件拆分为 2 个文件 - CAMS1.txt 和 CAMS2.txt。它们的内容如下

CAMS1.txt

4153999999999991
4153999999999992
4153999999999993
4153999999999994
Run Code Online (Sandbox Code Playgroud)

CAMS2.txt

4801999999999991
4801999999999992
4801999999999993
Run Code Online (Sandbox Code Playgroud)

它实际上是根据原始 CAMS.txt 文件的前 4 位数字拆分文件。它永远是 4153 和 4801。我是 unix 世界的新手 =)

Emm*_*uel 5

awk '/^4153/ {print >"CAMS1.TXT"; next} {print >"CAMS2.TXT"}' CAMS.TXT
Run Code Online (Sandbox Code Playgroud)

还有其他方法可以做到这一点,另一种方法是使用两个 grep 命令

grep "^4153" CAMS.TXT > CAMS1.TXT
grep -v "^4153" CAMS.TXT > CAMS2.TXT
Run Code Online (Sandbox Code Playgroud)

这样效率较低但更容易输入,在第一个 grep 完成后,您可以从 shell 历史记录中调用它(使用“向上”箭头键)并进行一些更改。当然,文件会被读取两次,所以如果它很大,就不要这样做。