小编aug*_*ust的帖子

根据列名打印列

假设我有一个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)

这不仅缺少其他行,而且每个列名都打印在一行上。

bash awk sed

1
推荐指数
1
解决办法
61
查看次数

标签 统计

awk ×1

bash ×1

sed ×1