Linux 基于现有列的值添加新列

Linux 基于现有列的值添加新列,linux,text,awk,processing,Linux,Text,Awk,Processing,我正在尝试在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 将字段分隔符设置为逗号。 在每一行上,将数组[first column]设置为当前值,后跟第三列和第四列。

我正在尝试在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
将字段分隔符设置为逗号。 在每一行上,将数组[first column]设置为当前值,后跟第三列和第四列。 最后,对于每个索引,打印索引名称、逗号、字符串00和该索引的值。
A[A1]的终值是,N1,T1,N2,T2

欢迎来到SO。Stack Overflow是一个面向专业和热心程序员的问答网站。我们的目标是在问题中添加一些自己的代码,以至少显示您自己为解决此问题所做的研究工作。扩展@Cyrus的评论,如果您展示您迄今为止尝试过的代码,并描述您在这方面遇到的问题,您将得到更友好的接待和更好的帮助。如果没有代码,你的问题看起来像是免费咨询的请求,很多人不喜欢这样。@Cyrus。说得对。我对awk非常陌生,因此我要求开始。我最初的尝试如下。首先通过复制最后两列,然后应用if条件,最后应用联接。$cat a.txt A1,00,N1,T1 A1,01,N2,T2 A2,00,N3,T3 A2,01,N4,T4$cat a.txt | awk'开始{OFS=FS=,}$2==00{$5=;$6=}$2==01{$5=$3;$6=$4=};1'A1,00,N1,T1,,A1,01,,,N2,T2 A2,00,N3,T3,,,A2,01,,,N4,T4$试图找到连接00或01上数据的方法。也不知道它的性能,如果我有2亿个记录60宽。谢谢你@ vtn.@ jg1991如果这回答你的问题,请考虑点击旁边的复选标记,选择它作为最佳答案。如果您对这个问题还有任何疑问,请告诉我。@vitnes。我道歉。我预期答案的最后一行有一个打字错误。值应该是A2,01,N3,T3,N4,T4,而不是A2,00,N3,T3,N4,T4。我最后使用的是这里的示例。$cat join1.awk BEGIN{FS=OFS=,}{key=$1}!看到[key]+{keys[++total]=key}{values[key]=key-in-values?values[key]FS$3 FS$4:$3 FS$4}END{for cnt=1;cnt
$ 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