특정 조건에서 코드 줄 수를 계산하는 방법

특정 조건에서 코드 줄 수를 계산하는 방법
  • 빈 줄 무시
  • 공백만 포함된 줄 무시
  • 탭 문자만 포함된 줄 무시
  • 다음으로 시작하는 줄을 무시하세요.//

블록 댓글 수를 계산하기 위해 이것을 추가하고 싶었습니다. 스크립트를 사용하려고 합니다.

sed '/  "/*"   /,/   "*\"   / p'  a.txt | wc -l

/별/예

코드는 /* 내의 각 줄을 계산합니다./에는 /가 포함된 행이 포함됩니다.그리고*/

/*
ABC
Def
Thi
*/

답변1

일치를 반전시키기 grep -c위해 일치하는 줄 수를 계산하는 데 사용됩니다 .-v

grep -cv -e '^\s*$' -e '^\s*//' yourcode.c

구현이 이를 지원하지 않는 경우 \s동등한 표준으로 대체하십시오.[[:space:]]grep

/dev/null(그리고 해당 값에는 전혀 유용한 의미가 없으므로 결과를 다음으로 리디렉션하는 것을 잊지 마십시오 .)

답변2

GNU sedwc.

sed -E -n '\:^[ \t]*$|^[ \t]*//:!p' infile |wc -l
  • 줄 간격, 탭, 빈 줄만 무시합니다.^[ \t]*$
  • 공백이 있는 경우 로 시작하는 줄은 무시되거나 //건너 ^//뜁니다 .^[ \t]*//
  • wc -lsed계산은 다음으로 대체할 수 있는 나머지 줄을 출력합니다 .sed -n '$='

또는 [ \t]*로 교체하세요 \s*.

sed -E -n '\:^\s*$|^\s*//:!p' infile

awk해결책.

awk '!/^[ \t]*$/ && !/^[ \t]*\/\//{N++} END{print N}' infile

답변3

사용 awk:

awk 'NF > 0 && !/^\/\// { c++ } END { print c }'

awk정규식을 사용하여 각 행을 필드로 분할합니다. 기본적으로 이 정규식은 공백과 탭으로 구분됩니다.

필드 수가 NF0보다 크고 행이 시작하지 않으면 //이를 계산합니다. 마지막으로 합계를 인쇄합니다.

//줄 앞에 공백 문자를 원하는 수만큼 허용하고 해당 줄을 건너뛰려면 다음을 수행하세요.

awk 'NF > 0 && !/^[[:space:]]*\/\// { c++ } END { print c }'

관련 정보