如何用awk或sed交叉合并同一文件中的两个表格?
列交错合并的简便实现方法
这种将两个表格对应行的列交替穿插排列的操作,专业上可以称为列交错合并(或“列穿插合并”)。不用拆分文件,直接用脚本就能处理,以下是两种简便方案:
方法一:用awk命令行工具
假设你的原文件名为tables.txt,执行以下awk脚本即可直接生成目标格式:
/^Table A$/ {flag=1; next} /^Table B$/ {flag=2; idx=1; next} flag==1 && $0 !~ /^$/ {a[idx++]=$0} flag==2 && $0 !~ /^$/ { split(a[idx], arrA, / /) split($0, arrB, / /) line="" for(i=1; i<=length(arrA); i++){ line = line sprintf("%-4s", arrA[i]) sprintf("%-4s", arrB[i]) } print line idx++ }
把上面的代码保存为merge.awk,然后在终端运行:
awk -f merge.awk tables.txt
方法二:用Python脚本
如果更熟悉Python,也可以用脚本处理:
with open('tables.txt', 'r') as f: lines = [line.strip() for line in f if line.strip()] # 拆分两个表格的内容 split_pos = lines.index('**Table B**') table_a_rows = lines[1:split_pos] table_b_rows = lines[split_pos+1:] # 逐行交错合并 for row_a, row_b in zip(table_a_rows, table_b_rows): cols_a = row_a.split() cols_b = row_b.split() merged_cols = [] for col_a, col_b in zip(cols_a, cols_b): merged_cols.append(f"{col_a:<4}{col_b:<4}") print(''.join(merged_cols).rstrip())
运行脚本后就能直接输出目标格式的内容。
内容的提问来源于stack exchange,提问作者ash
相关产品推荐
相关产品推荐

