假设我有一个test.txt包含
a,b,c,d,e
1,2,3,4,5
6,7,8,9,10
Run Code Online (Sandbox Code Playgroud)
我想根据匹配的列名打印列,无论是从另一个文本文件还是从数组。例如,如果我被给予
arr=(a b c)
Run Code Online (Sandbox Code Playgroud)
我希望我的输出是
a,b,c
1,2,3
6,7,8
Run Code Online (Sandbox Code Playgroud)
如何使用 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
Run Code Online (Sandbox Code Playgroud)
但我得到的输出是
a
b
c
Run Code Online (Sandbox Code Playgroud)
这不仅缺少其他行,而且每个列名都打印在一行上。