열 이름이 어느 위치 번호에 나타나는지 알고 싶은 시나리오가 있습니다.
아래에 샘플 데이터가 있는 것처럼
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