我正在尝试使用行号将我的大文件分成小文件。例如,我的文件有 30,000,000 行,我想将其分成小文件,其中有 10,000 行(相当于 3000 个小文件)。
我在 unix 中使用了“拆分”,但它似乎仅限于 100 个文件。
有没有办法克服 100 个文件的限制?
如果有其他方法可以做到这一点,也请告知。
谢谢。
使用GNU awk
gawk '
BEGIN {
i=1
}
{
print $0 > "small"i".txt"
}
NR%10==0 {
close("file"i".txt"); i++
}' bigfile.txt
[jaypal:~/temp] seq 100 > bigfile.txt
[jaypal:~/temp] gawk 'BEGIN {i=1} {print $0 > "small"i".txt" } NR%10==0 { close("file"i".txt"); i++ }' bigfile.txt
[jaypal:~/temp] ls small*
small1.txt small10.txt small2.txt small3.txt small4.txt small5.txt small6.txt small7.txt small8.txt small9.txt
[jaypal:~/temp] cat small1.txt
1
2
3
4
5
6
7
8
9
10
[jaypal:~/temp] cat small10.txt
91
92
93
94
95
96
97
98
99
100
不是答案,只是添加了一种方法来按照评论中的要求进行重命名部分
$ touch 000{1..5}.txt
$ ls
0001.txt 0002.txt 0003.txt 0004.txt 0005.txt
$ rename 's/^0*//' *.txt
$ ls
1.txt 2.txt 3.txt 4.txt 5.txt
我还用 3000 个文件尝试了上述方法,没有任何问题。