这样做的目的是使用第 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/