使用awk处理双文件数据:字符串转换与自定义排序实现咨询
处理方案
你可以组合awk做字段转换、sort做自定义排序实现需求,完整命令如下:
awk '{ new_id = $1 if (substr(new_id, 1, 1) == "Q") { gsub(/-/, "", new_id) } else { gsub(/[x-]/, "", new_id) } sort_prio = index("PQRS", substr(new_id, 1, 1)) print sort_prio, new_id, $2 }' file1 file2 | sort -k1,1n -k2,2V | awk '{print $2, $3}' > outputFile
逻辑说明
- 字段转换逻辑:判断标识符首字母是否为Q,是则仅删除连字符保留x,否则同时删除所有x和连字符,完全匹配转换规则。
- 排序逻辑:先给不同首字母分配对应排序优先级数值,保证首字母按P→Q→R→S顺序排列;再用sort的自然版本排序(
-V参数)处理同前缀标识符,自动按末尾数值升序排列,避免出现11排在2前面的字符排序问题。 - 最后输出时剔除排序用的辅助列,只保留转换后的标识符和对应数值,输出结果和预期完全一致。
内容的提问来源于stack exchange,提问作者Numerical Person
相关产品推荐
相关产品推荐

