Answers:
保存完文件后,您始终可以split
根据行数将文件分成多个文件片段或多个文件。
split -l 1000 output_file
甚至更好地尝试
command | split -l 1000 -
这会将输出流分成每1000行的文件(默认为1000行,不带-l选项)。
下面的命令将为您提供额外的灵活性,以便在生成输出并将其拆分以存储到文件时生成的文件名添加前缀或强制使用前缀。
command | split -l 1000 - small-
您可以使用bash脚本 lines.bash
#!/bin/bash
a=0
while IFS='' read -r line
do
printf -v filename "%04d.txt" "$((a++/1000))"
echo "$line" >> $filename
done
并将其用作:
cat long_file.txt | bash lines.bash
我注意到的唯一问题是*
登录long_file.txt
(有人可以纠正它)。
IFS
为空字符串,以避免在上拆分单词read
。使用-r
以禁用反斜杠上read
。删除-e
以避免反斜杠转义echo
。使用引号避免在上拆分单词echo
。从4.0开始使用-v
,bash
以避免启动子进程。使用后递增,因为您当前的代码只会在第一个文件中放入999行。a=0; while IFS='' read -r line; do printf -v filename "%04d.txt" $((a++/1000)); echo "$line" >> "$filename"; done
printf
没有-v
开关。(bash 4.2.10
)。至少它不在联机帮助中printf
man printf
文档/ usr / bin / printf,在生命中永远无法设置环境变量。见help printf
的printf
内置shell的文档。
++/
。
split [arguments...] [input e.g. "-" for stdin] [output_prefix]
例如:tar -c somedir | split --byes 100MB --numeric-suffixes --suffix-length=3 - somedir.tar.part-
将输出一堆名为somedir.tar.part-000
001、002 ans 的100MB文件,依此类推。