如何获取多个列名的位置

如何获取多个列名的位置

我有一个场景,我想知道列名称出现在哪个位置号

就像我下面有示例数据一样

ID|NAME|S1|BQ|S2|VN|D1
1|vimal|10.12|12.4|56.2|12.2|11.22
2|vilas|10.12|12.4|56.2|12.2|11.22
3|viky|10.12|12.4|56.2|12.2|11.22

列名称:S1 S2 D1

输出应该是:

3
5
7

答案1

假设样本数据在file1中:

awk -F"|" 'NR==1{for(i=1;i<=NF;i++){print $i"=$"i}}' file1 | grep -E "S1|S2|D1"

使用 awk,我们只读取第一行并分成多个列,其中它表示为列与列号。使用 grep,我们仅过滤我们感兴趣的列表。

由于OP更改了输出格式,更新了解决方案:

awk -F"|" 'NR==1{for(i=1;i<=NF;i++){if ($i ~ /S1|S2|D1/){print i;}}}' file

相关内容