다음과 같이 파일에서 주석을 제거하는 sed 명령이 있습니다.
sed -i /^#/d /path/to/file
이것은 작동하지만 주석이 공백으로 들여쓰기/앞에 오는 경우에는 작동하지 않습니다.
좋다
#this is a good comment ---- works
#this is an indented comment ---- doesn't work
첫 번째로 보이는 문자로 #이 포함된 줄을 제거하려면 어떻게 변경해야 합니까?
답변1
선행 공백을 허용하도록 정규식을 수정하세요.
sed -e '/^[ \t]*#/d'
이 정규 표현식은 0개 이상의 공백이나 탭(순서 상관 없음)으로 시작하고 그 뒤에 파운드 기호가 오는 줄과 일치합니다.
GNU sed는 기호 이름도 지원합니다:
sed -e '/^[[:space:]]*/d'
여기에는 흥미로운 유니코드 외국어 문자를 포함한 모든 공백 문자가 포함됩니다. 그러나 이것은 이식성이 떨어집니다.
답변2
노력하다
sed -i -e '/^[ \t]*#/d' /path/to/file
\t를 리터럴 탭 문자로 바꿔야 할 수도 있습니다.
답변3
넌 할 수있어:
sed '/^[[:blank:]]*#/d' file.txt
사용 grep
:
grep -v '^[[:blank:]]*#' file.txt
답변4
사용:
sed '/^\s*#/d'
설명하다:
^ beginning of line
\s* arbitrary amount of whitespace (or none)