#!/bin/bash
awk -F ":" '
{
arr[$1] = (arr[$1] "\n" $2)
}
END{
for(i in arr) {
printf "["i"]"
print arr[i]
}
}
' nowcoder.txt
# 第 1 行: 111:13443
# arr["111"] 之前的值为空 ""
# 解析步骤: arr["111"] = ("" "\n" $2) arr["111"] = ("" "\n" "13443") arr["111"] = "\n13443"
# 第 2 行: 222:13211
# arr["222"] 之前的值为空
# 解析步骤: arr["222"] = ("" "\n" $2) arr["222"] = ("" "\n" "13211") arr["222"] = "\n13211"
# 第 3 行: 111:13643
# arr["111"] 之前的值为 "\n13443"
# 解析步骤: arr["111"] = ("\n13443" "\n" $2) arr["111"] = ("\n13443" "\n" "13643") arr["111"] = "\n13443\n13643"
# 第 4 行: 333:12341
# arr["333"] 之前的值为空
# 解析步骤: arr["333"] = ("" "\n" $2) arr["333"] = ("" "\n" "12341") arr["333"] = "\n12341"
# 第 5 行: 222:12123
# arr[222] 之前的值为 "\n13211"
# 解析步骤: arr["222"] = ("\n13211" "\n" $2) arr["222"] = ("\n13211" "\n" "12123") arr["222"] = "\n13211\n12123"
# 总结
# arr["111"] = "\n13443\n13643"
# arr["222"] = "\n13211\n12123"
# arr["333"] = "\n12341"
思路:使用Associative Arrays(关联数组)
相关书籍:The Linux Command Line 2nd (2019) 第 35 章 ARRAYS
END

京公网安备 11010502036488号