파일에서 특수 문자 집합이 포함된 줄을 찾는 방법은 무엇입니까?

파일에서 특수 문자 집합이 포함된 줄을 찾는 방법은 무엇입니까?

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'

관련 정보