gpt4 book ai didi

linux - 使用列中的引用拆分文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:04:59 24 4
gpt4 key购买 nike

这样做的目的是使用第 5 列作为引用拆分以下文件

336843.75 2395106.25 36289 38580 660                          
336843.75 2395118.75 36290 38580 660
336843.75 2395131.25 36291 38580 661
336843.75 2395143.75 36292 38580 662
336843.75 2395156.25 36293 38580 662
336843.75 2395168.75 36294 38580 663
336843.75 2495381.25 44311 38580 665
336843.75 2495393.75 44312 38580 760
336843.75 2495406.25 44313 38580 761
336843.75 2495418.75 44314 38580 762
336843.75 2495431.25 44315 38580 764
336843.75 2495443.75 44316 38580 765
336993.75 2394956.25 36277 38592 765
336993.75 2394968.75 36278 38592 766
336993.75 2394981.25 36279 38592 770

使用此代码,我减去第 5 列中的行以确定何时存在大于 50 的间隙。结果在第 6 列中

awk '{$6=$5-prev5} {prev5=$5; print}' file    

336843.75 2395106.25 36289 38580 660 660
336843.75 2395118.75 36290 38580 660 0
336843.75 2395131.25 36291 38580 661 1
336843.75 2395143.75 36292 38580 662 1
336843.75 2395156.25 36293 38580 662 0
336843.75 2395168.75 36294 38580 663 1
336843.75 2495381.25 44311 38580 665 2
336843.75 2495393.75 44312 38580 760 95
336843.75 2495406.25 44313 38580 761 1
336843.75 2495418.75 44314 38580 762 1
336843.75 2495431.25 44315 38580 764 2
336843.75 2495443.75 44316 38580 765 1
336993.75 2394956.25 36277 38592 765 0
336993.75 2394968.75 36278 38592 766 1
336993.75 2394981.25 36279 38592 770 4

根据上面的结果,我想将文件分成两部分,我之前提到过应该考虑第 6 列中大于 50 的间隙来拆分文件。

我可以使用这个选项

awk '{print> substr($5,1,1)}' file

但它并不总是有效。

输出想要的2个文件

文件 1:

336843.75 2395106.25 36289 38580 660 660                      
336843.75 2395118.75 36290 38580 660 0
336843.75 2395131.25 36291 38580 661 1
336843.75 2395143.75 36292 38580 662 1
336843.75 2395156.25 36293 38580 662 0
336843.75 2395168.75 36294 38580 663 1
336843.75 2495381.25 44311 38580 665 2

文件 2:

336843.75 2495393.75 44312 38580 760 95
336843.75 2495406.25 44313 38580 761 1
336843.75 2495418.75 44314 38580 762 1
336843.75 2495431.25 44315 38580 764 2
336843.75 2495443.75 44316 38580 765 1
336993.75 2394956.25 36277 38592 765 0
336993.75 2394968.75 36278 38592 766 1
336993.75 2394981.25 36279 38592 770 4

感谢您的帮助

最佳答案

Awk解决方案:

awk 'BEGIN{ c=1 }{ $6=$5-prev }{ prev=$5 }{ print > "file"(NR>1 && $6 > 50? ++c:c) }' file

结果:

$ head file[12]
==> file1 <==
336843.75 2395106.25 36289 38580 660 660
336843.75 2395118.75 36290 38580 660 0
336843.75 2395131.25 36291 38580 661 1
336843.75 2395143.75 36292 38580 662 1
336843.75 2395156.25 36293 38580 662 0
336843.75 2395168.75 36294 38580 663 1
336843.75 2495381.25 44311 38580 665 2

==> file2 <==
336843.75 2495393.75 44312 38580 760 95
336843.75 2495406.25 44313 38580 761 1
336843.75 2495418.75 44314 38580 762 1
336843.75 2495431.25 44315 38580 764 2
336843.75 2495443.75 44316 38580 765 1
336993.75 2394956.25 36277 38592 765 0
336993.75 2394968.75 36278 38592 766 1
336993.75 2394981.25 36279 38592 770 4

关于linux - 使用列中的引用拆分文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48822086/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com