![如何获取多个列名称的列位置](https://linux22.com/image/12767/%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%A7%B0%E7%9A%84%E5%88%97%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
column name : S1|S2|D1
输出应如下:
3
5
7
我尝试了下面的代码,但部分提供了输出
awk -F"|" 'NR==1{for(i=1;i<=NF;i++){print $i"=$"i}}' demo.txt | grep -E "S1|S2|D1"
S1=$3
S2=$5
D1=$7
需要如下输出
3
5
7
答案1
尝试:
$ awk -F"|" 'NR==1 {for(i=1;i<=NF;i++) if ($i=="S1" || $i=="S2" || $i=="D1" ) {print i}}' demo.txt
不过(我刚刚查了一下),@大师的回答从我的角度来看,它的作用相同,而且看起来更好。