首页 > 解决方案 > 将文本文件拆分成块并保存

问题描述

我有一个名为 test.txt 的大文本文件。现在我想将大文本文件拆分为...符号处的块,并希望以与之后的名称相同的名称保存/home/niu/。(在下面的数据示例中,我需要 20190630_073410_1.5_29_PCK.txt为第一个块、20180630_073410_1.5_29_PCK.txt第二个块和20190830_093410_1.5_29_PCK.txt第三个块保存数据块。

因此我尝试了下面的代码:

#!/bin/sh
for file in 'test.txt'
do
split -l '...'
done

它不起作用:我希望有人能帮助我。谢谢。

我保存在 test.txt 中的数据如下:

    ...........................................................................................................   
    /home/niu/20190630_073410_1.5_29_PCK.txt 470.2359935984357 41573823894247.63 53.46648291467124 216 1 0.1
    /home/niu/20190630_073410_1.5_29_PCK.txt 13.124782961287574 219608788311302.7 53.46425102814092 219 1 0.6
    /home/niu/20190630_073410_1.5_29_PCK.txt 4.092419925137149 12174862157739.746 53.44206693334351 291 1 1.1
    ...........................................................................................................
    /home/niu/20180630_073410_1.5_29_PCK.txt 2.241494955966288 363350265475740.4 53.36874778729164 219 1 0.1
    /home/niu/20180630_073410_1.5_29_PCK.txt 1.6671382966847936 282579486756.3921 53.234249504389624 218 1 2.1
    /home/niu/20180630_073410_1.5_29_PCK.txt 1.4410832347641427 17729080367.579777 53.06935945567802 216 1 2.6
    ...........................................................................................................
    /home/niu/20190830_093410_1.5_29_PCK.txt 1.2367527642969733 5141.577700615736 52.776493933960644 127 0 3.6
    /home/niu/20190830_093410_1.5_29_PCK.txt 1.171644866817557 3279.978138771641 52.65760209064783 135 0 4.1
    /home/niu/20190830_093410_1.5_29_PCK.txt 1.120249969361367 2441.45977994814 52.54882982584634 105 0 4.6

标签: linuxbashfor-loopawksplit

解决方案


awk '/\.\.\./{close(out); next} {split($1, a, "/"); out=a[4]; print > out}' file

你可以使用这个 awk。我假设点 ( ...) 仅存在于分隔行中,所有其他行也以 开头/home/niu/filename.txt,我们从中获取输出文件名。如果不是这种情况,请更新问题。


推荐阅读