awk를 사용하여 숫자 FN을 찾으세요.

awk를 사용하여 숫자 FN을 찾으세요.

다음과 같은 여러 열이 있는 문서가 있습니다.

,Flag2,,Flag4,Flag5,,,,,Flag10,Flag11,Flag12,Flag13

awk를 사용하여 전체 필드 수와 구분 기호를 확인하면 ,결과는 다음과 같습니다.

이제 Flag10의 필드 번호를 얻으려면 결과는 다음과 같습니다. 10

awk를 사용하여 이 작업을 어떻게 수행할 수 있나요?

답변1

아래와 같이 하면 됩니다.

awk -F, '{for(i=1;i<=NF;i++)if($i=="Flag10")print i}' file

예:

$ echo ',Flag2,,Flag4,Flag5,,,,,Flag10,Flag11,Flag12,Flag13' | awk -F, '{for(i=1;i<=NF;i++)if($i=="Flag10")print i}'
10

답변2

나는 보통 헤더 이름을 열 번호에 매핑하는 연관 배열을 만듭니다.

awk -F, -v head="Flag10" '
    FNR == 1 {for (i=1; i<=NF; i++) col[$i] = i}
    {print $col[head]}
' << END
,Flag2,,Flag4,Flag5,,,,,Flag10,Flag11,Flag12,Flag13
10,20,30,40,50,60,70,80,90,100,110,120,130
END
Flag10
100

답변3

awk내장 기능을 사용하려면 :

awk -F, -v field="Flag10" '{sub(field",.*",field);print split($0,any)}' doc.file

스크립트는 값이 처음 나타난 이후의 모든 내용을 제거한 다음 field(이 경우 Flag10) 결과를 쉼표로 구분된 줄로 인쇄합니다. 그 이후에는 모두 삭제했기 때문에 Flag10남은 필드 수는 검색 패턴의 필드 번호입니다.

관련 정보