grep은 "#print" 대신 "print"를 찾습니다.

grep은 "#print" 대신 "print"를 찾습니다.

디버깅할 때 "print"를 많이 사용하고 "#print"로 주석 처리합니다. grep을 사용하여 "인쇄" 앞에 "#"이 없는 줄을 찾으려면 어떻게 해야 합니까?

# print <- not detect
#print <- not detect
abc # print <-- not detect
print <- detect

답변1

grep '^[^#]*print'

print앞에는 #이 아닌 문자만 올 수 있습니다.

답변2

클래식 솔루션:

grep -v '^#' <input |grep 'print'

답변3

가장 쉬운 방법은 아마도 두 개의 grep파이프를 함께 사용하는 것입니다.

$ grep 'print' <input | grep -v '#[[:space:]]*print'

input예제가 포함된 파일을 사용하면 다음을 얻을 수 있습니다.

print <- detect

이는 모든 예제에 적용됩니다. 이것만으로도 충분할 수 있지만 저와 manatwork가 댓글에서 지적했듯이 grep.

답변4

아직 배우는 중인데 ff도 작동할까요?

grep -v '#[ ]*print' input_file

관련 정보