![如何获取多个列名的位置](https://linux22.com/image/12771/%E5%A6%82%E4%BD%95%E8%8E%B7%E5%8F%96%E5%A4%9A%E4%B8%AA%E5%88%97%E5%90%8D%E7%9A%84%E4%BD%8D%E7%BD%AE.png)
我有一个场景,我想知道列名称出现在哪个位置号
就像我下面有示例数据一样
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