【发布时间】:2020-05-13 14:28:20
【问题描述】:
我有一个名为“ranges.csv”的 csv 文件,其中包含:
start_range,stop_range
9702220000,9702220999
9702222000,9702222999
9702223000,9702223999
9750000000,9750000999
9750001000,9750001999
9750002000,9750002999
我正在尝试组合 stop_range=start_range-1 的范围,并将结果输出到另一个名为“ranges2.csv”的 csv 文件中。所以输出将是:
9702220000,9702220999
9702222000,9702223999
9750000000,9750002999
此外,我需要知道有多少范围包含一个压缩范围(例如:对于新范围9750000000,9750002999,我需要知道在压缩之前有 3 个范围)。此信息将帮助我创建一个名为“ranges3.csv”的新 csv 文件,该文件应仅包含其中范围最多的范围(最全面的区域):
9750000000,9750002999
我在想这样的事情:
if (stop_range = start_range-1)
new_stop_range = start_range-1
但我不是很聪明,而且我是 bash 脚本的新手。
我知道如何在另一个文件中输出结果,但我需要的功能让我头疼。
【问题讨论】:
-
欢迎来到 SO,请务必将您的样品包装在代码标签中以明确问题。
-
不要使用
bash处理数据。至少,使用awk。 -
在这种情况下,我建议你使用
awk。 -
首先,您将使用哪种编程语言或外壳工具并不重要,但要了解您的要求。输入 CSV 是否总是一个有序列表,其中一行的停止值总是小于下一行的开始值?此外 - 从来没有一个停止值会溢出起始值吗? (例如 9702220000,9702224999 和下一行 9702222100,9702222500)
-
@TomFreudenberg ,输入 CSV 文件并不总是有序列表。是的,在您的示例中,停止值可能会溢出起始值。