- 빈 줄 무시
- 공백만 포함된 줄 무시
- 탭 문자만 포함된 줄 무시
- 다음으로 시작하는 줄을 무시하세요.
//
블록 댓글 수를 계산하기 위해 이것을 추가하고 싶었습니다. 스크립트를 사용하려고 합니다.
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 sed
와 wc
.
sed -E -n '\:^[ \t]*$|^[ \t]*//:!p' infile |wc -l
- 줄 간격, 탭, 빈 줄만 무시합니다.
^[ \t]*$
- 공백이 있는 경우 로 시작하는 줄은 무시되거나
//
건너^//
뜁니다 .^[ \t]*//
wc -l
sed
계산은 다음으로 대체할 수 있는 나머지 줄을 출력합니다 .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
정규식을 사용하여 각 행을 필드로 분할합니다. 기본적으로 이 정규식은 공백과 탭으로 구분됩니다.
필드 수가 NF
0보다 크고 행이 시작하지 않으면 //
이를 계산합니다. 마지막으로 합계를 인쇄합니다.
//
줄 앞에 공백 문자를 원하는 수만큼 허용하고 해당 줄을 건너뛰려면 다음을 수행하세요.
awk 'NF > 0 && !/^[[:space:]]*\/\// { c++ } END { print c }'