【发布时间】:2021-04-21 00:54:28
【问题描述】:
假设我有一个文件test.txt,其中包含
a,b,c,d,e
1,2,3,4,5
6,7,8,9,10
我想根据匹配的列名打印出来自另一个文本文件或数组的列。因此,例如,如果给我
arr=(a b c)
我希望我的输出是
a,b,c
1,2,3
6,7,8
如何使用 bash 实用程序/awk/sed 执行此操作?我的实际文本文件是 3GB(我想要匹配列值的行实际上是第 3 行),因此非常感谢有效的解决方案。这是我目前所拥有的:
for j in "${arr[@]}"; do awk -F ',' -v a=$j '{ for(i=1;i<=NF;i++) {if($i==a) {print $i}}}' test.txt; done
但我得到的输出是
a
b
c
这不仅缺少其他行,而且每个列名都打印在一行上。
【问题讨论】: