한 줄에서 쉼표로 구분된 문자 수 계산

한 줄에서 쉼표로 구분된 문자 수 계산

awk 또는 sed를 사용하여 파일의 특정 열(탭으로 구분)에 쉼표로 구분된 요소 수를 계산하는 방법은 무엇입니까?

예:

AC    1,23,5
DC    2,8,89

다음을 반환합니다:

AC    3
DC    3

답변1

$ awk -F '[\t,]' '{print $1, NF-1}' some_file

어디

  • -F필드 구분 기호(탭 또는 쉼표)를 설정하세요.
  • $1첫 번째 필드 참조
  • NF레코드의 필드 수를 포함하는 내장 변수입니다.
  • awk 문은 각 레코드(즉, 각 행)에 대해 실행됩니다.

답변2

awk -v col=2 -F '\t' '{$col=gsub(",", "", $col)+1; print}'

col는 분석의 컬럼 번호를 나타내는 파라미터로 -v2로 지정됩니다.

-F '\t'필드 구분 기호를 탭 1 로 설정합니다 .gsub대체 횟수를 반환하므로 쉼표 수를 계산하는 데 사용됩니다. 결과는 분석 열에 할당되고 print결과적으로 모든 열이 표시됩니다.

$ cat input 
AC  1,23,5
DC  2,8,89
XX  3,4,5,6,7   YYY,ZZZ
$ awk --assign col=2 -F '\t' '{$col=gsub(",", "", $col)+1; print}' < input
AC 3
DC 3
XX 5 YYY,ZZZ

1일부 awk 구현은 구문 분석이 불가능할 수 있으며 \t, 이 경우 Bash 특정 기능을 사용할 수 있습니다.인용하다- $'\t'- 탭 문자 자체를 awk에 전달합니다.

관련 정보