首页 > 解决方案 > 根据现有列的值添加新列

问题描述

我正在尝试将分隔文件转换为 linux 中的数据表。某些列中值的含义取决于单独列中的值。如何根据列的值创建其他列?

根据第 2 列的值,即 00 或 01,第 3 列和第 4 列的解释是不同的。因此,如果我有以下值。

A1,00,N1,T1
A1,01,N2,T2
A2,00,N3,T3
A2,01,N4,T4

预期结果应如下所示。请注意我现在有两个新列。

A1,00,N1,T1,N2,T2
A2,01,N3,T3,N4,T4

标签: linuxtextawkprocessing

解决方案


$ awk -F, '                                #1
      {A[$1] = A[$1] FS $3 FS $4}          #2
  END {for(i in A) print i FS "00" A[i]}   #3
' file
A1,00,N1,T1,N2,T2
A2,00,N3,T3,N4,T4
  1. 将字段分隔符设置为逗号。
  2. 在每一行上,设置Array[first-column]为其当前值,后跟第三和第四列。
  3. 最后,对于每个索引,打印索引名称、逗号、字符串“00”和该索引的值。

A[A1]的最终值为,N1,T1,N2,T2


推荐阅读