如何拆分文件第一列的逗号分隔值并关联对应第二列值
文本拆分与列映射实现方案
方法一:使用awk(推荐,简洁高效)
awk是处理文本列的利器,一行命令就能完成需求:
awk '{split($1, arr, ","); for (i in arr) print arr[i], $2}' input.txt
说明:
split($1, arr, ","):将第一列按逗号分割,存入数组arr- 循环遍历数组
arr,逐个输出数组元素 + 第二列的对应值 - awk默认会自动忽略列之间的多个空白符,兼容原文件中列分隔为多个空格的情况
如果原文件用制表符分隔两列,只需指定分隔符:
awk -F'\t' '{split($1, arr, ","); for (i in arr) print arr[i], $2}' input.txt
方法二:使用sed + bash管道
适合习惯shell管道组合的场景:
sed 's/\(.*\)\s\+\([^[:space:]]\+\)/echo "\1" | tr "," "\n" | xargs -I {} echo {} \2/e' input.txt
说明:
- sed捕获每行的两部分内容:第一部分是逗号分隔的字符串,第二部分是目标值
- 通过
tr "," "\n"将逗号替换为换行,再用xargs把每个值和目标值拼接输出
方法三:使用Python(灵活扩展)
如果需要后续扩展复杂逻辑,用Python更易维护:
with open('input.txt', 'r') as f: for line in f: line = line.strip() if not line: continue # 只分割一次,避免第二列包含空格的情况 left_part, right_val = line.split(maxsplit=1) for item in left_part.split(','): print(f"{item} {right_val}")
说明:
split(maxsplit=1)确保第二列即使包含空格也不会被拆分- 逐行处理,拆分第一列后循环输出每个元素与第二列的组合
内容的提问来源于stack exchange,提问作者lre1234
相关产品推荐
相关产品推荐

