c
기존 프로그램을 실행하고 여기에 주석이 포함되어 있는지 확인하는 스크립트를 작성 중입니다 .
주석 태그로 시작하고 끝나야 합니다.
/* and */
이 목표를 어떻게 달성할 수 있나요?
예: 다음과 같이 작동합니다.
egrep "/\.*\./" sample.txt
그러나 /*/로 시작하고 끝나는 줄만 나열하고 싶습니다. 예를 들어 다음 입력을 고려하십시오. hi /*/ hello 이것은 유효한 주석은 아니지만 명령을 사용할 때 출력에 나타납니다.
답변1
/*
및 가 포함된 행을 찾으려면 */
다음을 수행해야 합니다.
grep '/\*.*\*/' file
/*
로 시작 하고 끝나는 행을 찾으려면 */
다음을 사용하십시오.
grep '^/\*.*\*/$' file
여는 주석 앞과 닫는 주석 뒤에 공백을 허용하려면 다음을 사용하십시오.
grep -E '^\s*/\*.*\*/\s*$' file
특수문자 이므로 *
이스케이프( )해야 합니다 \*
. 그 외에는 모두 스톡 캐릭터일 뿐입니다. 위의 정규 표현식은 /*
0개 이상의 문자( .*
)에서 최대 까지 일치합니다 */
.
답변2
한 가지 방법은 sed를 사용하는 것입니다.
sed의 %./*.*/%%; /^$/d'
예를 들어 댓글을 삭제하려면 다음과 같이 하세요.
printf "hello\nx=1\n/* some comment */\nnot some comment\nthis has /* but no close\n" |
sed 's%.*/\*.*\*/%%; /^$/d'