#으로 시작하는 줄 삭제


10

#의 왼쪽과 오른쪽에 공백이있을 수 있으므로으로 시작하는 줄을 어떻게 삭제 #합니까?

  # Master socket provides access to userdb information. It's typically

답변:


13

이것은 효과가있는 것 같지만 그것에 대해 깊이 생각하지 않았습니다.

sed -e '/^[[:space:]]*#/d'

10

당신은 grep그것을 위해 사용할 수 있습니다

grep -vh '^[[:space:]]*#' filename

필자가 가정 한 것처럼 일부 파일에서 주석을 제거하고 있으므로 빈 줄을 제거하여 위의 내용을 확장 할 수도 있습니다.

grep -vh '^[[:space:]]*\(#\|$\)' filename

3

awk 해결책은 패턴과 일치하는 것을 뒤집는 것입니다.

$> cat ./text
elephant
# Master socket provides access to userdb information. It's typically
zoo
 #ok
penguin
# !

$> awk '!/^(\ )*#/ {print $0}' ./text
elephant
zoo
penguin

4
공백 문자를 이스케이프 처리 할 필요가없고 공백 문자를 캡처 할 필요가 없으며 기본 조치를 지정할 필요가 없습니다 awk '!/^ *#/' ./text.
manatwork

awk '/^ *#/{next}1' file충분해야합니다.
jaypal singh


0

ДМИТРИЙ МАЛИКОВ ...에서 게시 한 샘플 데이터 사용

$ grep -vPh '^\s*#' filename.txt | grep -Po '\w+'
elephant
zoo
penguin

grep과 함께 pcre를 사용하는 것을 선호하므로 grep에 -P 스위치를 사용합니다 (GNU grep이어야 함). 두 번째 grep은 공백이없는 단어를 제공하는 순수한 설탕입니다. 또한 빈 줄을 "제거"합니다.


-1
$ perl -pi -e '$_="" if /^\s*#/' filename

그것은 좋지 않습니다-줄을 삭제하지 않고 다음과 같은 줄을 지 웁니다a#b
Mat
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.