linux - 根据现有列的值添加新列
问题描述
我正在尝试将分隔文件转换为 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
解决方案
$ 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
- 将字段分隔符设置为逗号。
- 在每一行上,设置
Array[first-column]
为其当前值,后跟第三和第四列。 - 最后,对于每个索引,打印索引名称、逗号、字符串“00”和该索引的值。
A[A1]
的最终值为,N1,T1,N2,T2
推荐阅读
- javascript - Ajax XML 每 10 秒更新一次
- java - 如何对动态内容进行子串化和提取
- ios - Swift:拖放,从谷歌图像中保存图像的网址
- google-apps-script - 通过 Google 脚本调用 Places API 返回 ZERO_RESULTS
- perl - Perl 与 Aspell 的接口
- python - 如何使用 PyQt 在 QGIS 中以编程方式创建分类符号系统
- python - 如何在字典理解中填充可选字段?
- python - 如何在 Python 中分析 response.text?
- actionscript-3 - 进入下一帧/错误时如何停止循环声音
- databricks - 如何生成有效期超过 48 小时的 databricks 特权令牌