将文本文件分成几个部分
spliting a txt file with text in several parts
我有一个 .txt 文件:
level5:tafekf
level5:tafekg
level5:tafekh
level5:tafeki
level5:tafekj
level5:tafekk
level5:tafekl
level5:tafekm
level5:tafekn
level5:tafeko
level5:tafekp
level5:tafekq
level5:tafekr
level5:tafeks
level5:tafekt
level5:tafeku
level5:tafekv
level5:tafekw
level5:tafekx
level5:tafeky
level5:tafekz
level5:tafela
level5:tafelb
level5:tafelc
level5:tafeld
level5:tafele
level5:tafelf
level5:tafeku
level5:tafekv
level5:tafekw
level5:tafekv
level5:tafekw
我想在 linux 终端中使用一个命令来拆分,例如 10 次。
所以我希望有 10 个 .txt 文件作为
的输出
1.txt
level5:tafekf
level5:tafekg
level5:tafekh
2.txt
level5:tafeki
level5:tafekj
level5:tafekk
3.txt
level5:tafekl
level5:tafekm
level5:tafekn
4.txt
level5:tafeko
level5:tafekp
level5:tafekq
5.txt
level5:tafekr
level5:tafeks
level5:tafekt
6.txt
level5:tafeku
level5:tafekv
level5:tafekw
7.txt
level5:tafekx
level5:tafeky
level5:tafekz
8.txt
level5:tafela
level5:tafelb
level5:tafelc
9.txt
level5:tafeld
level5:tafele
level5:tafelf
10.txt
level5:tafeku
level5:tafekv
level5:tafekw
level5:tafeih
level5:tafeii
谢谢。
您可以使用 GNU coreutils 中的 split
命令:
split -n l/10 --numeric-suffixes=1 --additional-suffix=.txt input.file
希望输出名称对您来说足够好。它们从 x01.txt
开始,然后是 x02.txt
等等。有关更多信息,请调用 info split
.
上述命令在 GNU 系统上有效,如 Linux。其他系统也可能附带一个 split 版本,但它与 GNU 版本不兼容。对于便携式版本,我会像这样使用 awk:
split.awk
{
a[NR]=[=11=]
c++
}
END {
lines_per_split = int(c/num_splits)
f=1
for(i=1;i<=c;i++) {
print a[i] >> f".txt"
if(i%lines_per_split==0 && c-i >= lines_per_split) {
close(f".txt")
f++
}
}
}
这样称呼它:
awk -vnum_splits=10 -f split.awk input.txt
我有一个 .txt 文件:
level5:tafekf
level5:tafekg
level5:tafekh
level5:tafeki
level5:tafekj
level5:tafekk
level5:tafekl
level5:tafekm
level5:tafekn
level5:tafeko
level5:tafekp
level5:tafekq
level5:tafekr
level5:tafeks
level5:tafekt
level5:tafeku
level5:tafekv
level5:tafekw
level5:tafekx
level5:tafeky
level5:tafekz
level5:tafela
level5:tafelb
level5:tafelc
level5:tafeld
level5:tafele
level5:tafelf
level5:tafeku
level5:tafekv
level5:tafekw
level5:tafekv
level5:tafekw
我想在 linux 终端中使用一个命令来拆分,例如 10 次。 所以我希望有 10 个 .txt 文件作为
的输出1.txt
level5:tafekf
level5:tafekg
level5:tafekh
2.txt
level5:tafeki
level5:tafekj
level5:tafekk
3.txt
level5:tafekl
level5:tafekm
level5:tafekn
4.txt
level5:tafeko
level5:tafekp
level5:tafekq
5.txt
level5:tafekr
level5:tafeks
level5:tafekt
6.txt
level5:tafeku
level5:tafekv
level5:tafekw
7.txt
level5:tafekx
level5:tafeky
level5:tafekz
8.txt
level5:tafela
level5:tafelb
level5:tafelc
9.txt
level5:tafeld
level5:tafele
level5:tafelf
10.txt
level5:tafeku
level5:tafekv
level5:tafekw
level5:tafeih
level5:tafeii
谢谢。
您可以使用 GNU coreutils 中的 split
命令:
split -n l/10 --numeric-suffixes=1 --additional-suffix=.txt input.file
希望输出名称对您来说足够好。它们从 x01.txt
开始,然后是 x02.txt
等等。有关更多信息,请调用 info split
.
上述命令在 GNU 系统上有效,如 Linux。其他系统也可能附带一个 split 版本,但它与 GNU 版本不兼容。对于便携式版本,我会像这样使用 awk:
split.awk
{
a[NR]=[=11=]
c++
}
END {
lines_per_split = int(c/num_splits)
f=1
for(i=1;i<=c;i++) {
print a[i] >> f".txt"
if(i%lines_per_split==0 && c-i >= lines_per_split) {
close(f".txt")
f++
}
}
}
这样称呼它:
awk -vnum_splits=10 -f split.awk input.txt