我需要将一个.txt文件拆分成更小的文件,每个文件包含 100 行,包括标题。我不知道这是否相关,但原始文件是这样分隔的:
COLUMN1 | COLUMN2 | COLUMN3
1 | 2 | 3
4 | 5 | 6
7 | 8 | 9
Run Code Online (Sandbox Code Playgroud)
我需要从这个拆分生成的每个文件都有标题行。此外,他们需要被生成/移动到另一个目录,并按照一个名称模式,如file_01.txt,file_02.txt等
与gnu split您可以节省头部的变量然后split从第二行开始,使用所述--filter选项以第一写报头,然后将99行,每件,并且还指定输出目录(例如path to/output dir/):
header=$(head -n 1 infile.txt)
export header
tail -n +2 infile.txt | split -l 99 -d --additional-suffix=.txt \
--filter='{ printf %s\\n "$header"; cat; } >path\ to/output\ dir/$FILE' - file_
Run Code Online (Sandbox Code Playgroud)
这将创建 100 行片段作为
path to/output dir/file_01.txt
path to/output dir/file_02.txt
path to/output dir/file_03.txt
..............................
Run Code Online (Sandbox Code Playgroud)
awk 'NR==1 {a=$0}
(NR-1)%100==0 {print a > "d/file_" int(1+(NR-1)/100)}
{print > "d/file_" int(1+(NR-1)/100)}'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5477 次 |
| 最近记录: |