Awk
有效地將範圍列表映射到文件中的值列表
我有值寫入範圍的文件,我需要將它們“取消映射”到普通列表,如何有效地實現這一點?
例子:
141540000,141569999,1 147280000,147289999,0
第一列是范圍起始值,第二列是范圍結束,第三列是與範圍中每個數字對應的一些數據。
我想要實現的範例結果:
141540000, 1 141540001, 1 141540002, 1 ... 141569998, 1 141569999, 1 147280000, 0 147280001, 0 ... 147289999, 0
我想最好的方法是使用 sed 或 awk 之類的東西,但我不知道如何解決。
awk -F, '{for (i=$1;i<=$2;i++) print i ", " $3}' file
對於每一行,我們執行 for 循環並列印數字和最後一個欄位。
使用 perl,在列表上下文中使用範圍運算符:
perl -F, -ne 'print "$_, $F[2]" for ($F[0]..$F[1])' file
或者
perl -F, -ne 'print map { "$_, $F[2]" } ($F[0]..$F[1])' file