#!/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