여러 열 이름의 위치를 ​​얻는 방법

여러 열 이름의 위치를 ​​얻는 방법

열 이름이 어느 위치 번호에 나타나는지 알고 싶은 시나리오가 있습니다.

아래에 샘플 데이터가 있는 것처럼

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

관련 정보