【发布时间】:2018-02-16 18:43:54
【问题描述】:
这样做的目的是使用第 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
感谢您的帮助
【问题讨论】: