比如说,我有一个命令command
可以将大量行打印到标准输出:
line1
line2
.....
lineN
我想将输出保存到磁盘,但不是作为单个文件,而是作为一系列文件,每个文件都有 1000 行 stdout:
file0001.txt:
-------------
line1
....
line1000
file0002.txt:
-------------
line1001
....
line2000
etc
我尝试用谷歌搜索答案,但每次谷歌都会提示我输入tee
命令,但在这种情况下这毫无用处。可能是我输入了错误的查询。
答案1
保存文件后,您始终可以split
根据行数将文件分成文件块或多个文件。
split -l 1000 output_file
或者更好的是尝试一下
command | split -l 1000 -
这会将输出流分割成每 1000 行的文件(默认为 1000 行,没有 -l 选项)。
以下命令将为您提供额外的灵活性,可以在生成输出并拆分以存储到文件中时生成的文件名中添加或强制添加前缀。
command | split -l 1000 - small-
答案2
您可以使用 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
(有人可以纠正它)。