例如,如果没有n行,则应创建n-1个文件。这是我到目前为止所取得的成就。我正在手动插入8(即总行数)。我不知道如何获取变量中的行总数,然后使用它。
awk '{if (NR<8) F=NR".ndjson"; print >> F; close (F)}' export.ndjson
[IMHO可以通过wc
命令获取总行数,然后将其存储到变量的一种方式。合理的警告,因为OP现在已经显示了示例,因此无法对其进行测试并在此处编辑/调整了OP的尝试。
awk -v lines="$(wc -l < "export.ndjson")" '{if (NR<lines) F=NR".ndjson"; print >> F; close (F)}' export.ndjson
[NOTE:另一种方法可以读取您的Input_fileexport.ndjson
2次,取其第一次的总行数(仅行数)和第二次执行的总行数,我们可以使用该计数用于条件。
[第二解决方案:如果我的假设是正确的,并且只想保留最后一行,则可以尝试在tac
+ awk
组合中保留第一行。
tac export.ndjson | awk 'FNR>1{F=NR".ndjson"; print >> F; close (F)}'
如果您希望输出文件的编号从2开始,
awk 'NR>1{out=NR".json"; print prev > out; close(out)} {prev=$0}' export.ndjson
或在1:
awk 'NR>1{out=(NR-1)".json"; print prev > out; close(out)} {prev=$0}' export.ndjson
或:
awk 'NR>1{print prev > out; close(out)} {prev=$0; out=NR".json"}' export.ndjson
将每一行打印到它自己的文件中,最后一行除外。
$ awk 'p{close(f); f=(NR-1)".ndjson"; print p > f} {p=$0}' file
还要注意,空行不会创建空文件。
逻辑只是将打印延迟一记录。