首页 > 解决方案 > 更正表格中的置换列

问题描述

一点上下文:我在下面显示的文件是由 VLSI 工具生成的。它由电路中的各种组件引起的时序延迟组成。当我生成这个“计时文件”时,这些字段有时没有正确组织。

生成的文件:

something1                 0.20   0.00   0.00 
something2 6    12.95 
something3        0.00     0.08   0.00   0.00   0.07 
something4   6    8.70 
something5        0.00     0.03   0.00   0.00   0.05 
something6   5    4.70

我想要的是:

something1                 0.20   0.00   0.00 
something2   6    12.95 
something3        0.00     0.08   0.00   0.00   0.07 
something4   6    8.70 
something5        0.00     0.03   0.00   0.00   0.05 
something6   5    4.70

某物4​​ 和某物6 的位移以特定顺序在整个表格中不断出现(比如每2 行或1 行)。只有 something2一个不同的位移,而所有其他位移都跟随 something4/ something6

到目前为止,我不知道如何进行此操作。有任何解决这个问题的方法吗?

标签: unixawksed

解决方案


$ awk '{gsub(/ {6}/,","); gsub(/ +/,",")} 1' file | column -s, -t
something1            0.20  0.00  0.00
something2  6  12.95
something3     0.00   0.08  0.00  0.00  0.07
something4  6  8.70
something5     0.00   0.03  0.00  0.00  0.05
something6  5  4.70

或者:

$ awk 'BEGIN{FS=OFS="\t"} {gsub(/ {6}/,FS); gsub(/ +/,FS); $1=$1} 1' file
something1                      0.20    0.00    0.00
something2      6       12.95
something3              0.00    0.08    0.00    0.00    0.07
something4      6       8.70
something5              0.00    0.03    0.00    0.00    0.05
something6      5       4.70

推荐阅读