【发布时间】:2018-03-08 05:05:51
【问题描述】:
数据:
EMAIL,NAME,KEY,LOCATION
foo@gmail.com,Joe,ABC,Denver
bar@gmail.com,Jane,EFD,Denver
...
总体目标: 接受我关心的字段并生成多个文件的脚本,其中包含数据中的所有唯一列。例如:
myScript.sh NAME LOCATION
生产:
Joe_Denver.csv - contains all lines with "Joe" and "Denver" in the
NAME and LOCATION columns
Jane_Denver.csv - contains all lines with "Jane" and "Denver" in the NAME and LOCATION columns
到目前为止我所拥有的:
- Bash 脚本接受任意数量的字段并将其存储在一个数组中
- 查找字段的列索引号并将其存储在数组中
我正在尝试:
- 使用 AWK 获取索引数组,然后输出我指定的字段的所有唯一组合,然后将其存储在数组中
- 遍历该字段组合数组,为每个组合打印一个文件,该文件包含数据中在这些列中具有这些值的所有行
我的第一步的 AWK 命令看起来像:
awk -F, -v colIdxs="${bashIdxs[*]}" '!seen[$colIdxs[*]]++ {print $colIdxs[*]}'
也就是说,我希望将存储在bashIdxs 中的索引用作 awk 脚本中的列索引(其中 bashIdxs 可以是任意大小)。
如何做到这一点?此外,如果有更好的方法来完成我正在尝试做的事情(我相信有),我也很想知道出于好奇。
【问题讨论】:
标签: awk