특정 문자를 제외하고 한 줄의 문자 수를 계산하는 방법은 무엇입니까?

특정 문자를 제외하고 한 줄의 문자 수를 계산하는 방법은 무엇입니까?

이것은 파일의 일부입니다

N W N N N N N N N N N
N C N N N N N N N N N
N A N N N N N N N N N
N N N N N N N N N N N
N G N N N N N N N N N
N C N N N C N N N N N
N C C N N N N N N N N

각 줄에서 "N"이 아닌 모든 문자의 총 개수를 계산하고 싶습니다.

내 소원 출력

1
1
1
0
1
2
2

답변1

암소 비슷한 일종의 영양해결책:

awk -v FPAT='[^N[:space:]]' '{ print NF }' file
  • FPAT='[^N[:space:]]'- 필드 값의 패턴을 정의합니다( N문자 및 공백을 제외한 모든 문자).

예상 출력:

1
1
1
0
1
2
2

답변2

awk '{ gsub("[ N]",""); print length() }'

답변3

또 다른 awk방법(반환-1빈 줄의 경우).

awk -F'[^N ]' '$0=NF-1""' infile

또는 복잡한 경우에는 반환됩니다.-1빈 줄에,0빈(탭/공백) 줄에만 해당됩니다.

awk -F'[^N \t]+' '$0=NF-1""' infile

답변4

선택하다해결책:

awk '{ print gsub(/[^N[:space:]]/,"") }' file
  • gsub(...)- 이 gsub()함수는 대체가 이루어진 횟수를 반환합니다.

산출:

1
1
1
0
1
2
2

관련 정보