"#" 또는 ";"로 시작하지 않는 줄을 찾는 방법은 무엇입니까?

"#" 또는 ";"로 시작하지 않는 줄을 찾는 방법은 무엇입니까?

smb.confgrep 하고 주석 처리되지 않은 줄만 보고 싶습니다 .

답변1

grep "^[^#;]" smb.conf

첫 번째는 ^줄의 시작을 의미하므로 첫 번째 문자 이후 주석으로 시작하는 줄은 제외되지 않습니다. 또는 이 아닌 모든 문자를 [^#;]나타냅니다 .#;

즉 , 및 이외의 문자로 시작하는 #행을 보고합니다 ;. #;(사용하는) 로 시작하지 않는 보고 라인과는 다릅니다 grep -v '^[#;]'.비어 있는좋습니다. 하지만 이 경우에는 빈 줄에 관심이 있는지 의심스럽기 때문에 아마도 더 나은 옵션일 것입니다.

선행 공백 문자를 무시하려면 다음과 같이 변경할 수 있습니다.

grep '^[[:blank:]]*[^[:blank:]#;]' smb.conf

또는

grep -vxE '[[:blank:]]*([#;].*)?' smb.conf

또는

awk '$1 ~ /^[^;#]/' smb.conf

답변2

Wim 솔루션:

:v/^\s*[#\n]/p

나는 vim 솔루션을 직접 찾으려고 노력하면서 이 문제를 우연히 발견했습니다.

답변3

Oliver nadj의 답변에 있는 grep 파이프는 다음을 통해 제거할 수 있습니다(GNU grep또는 호환 가능하다고 가정).

grep -v "^\s*[#\;]\|^\s*$" <some_conf_file>

답변4

grep -v "^\s*[#;]" any.conf | grep -v "^\s*$"

이것은 나에게 효과적입니다. 주석이나 빈 줄을 무시하고 해시 표시나 세미콜론 앞의 공백도 무시합니다.

관련 정보