파일을 "cat"하고 주석 처리된 줄을 제거하는 방법은 무엇입니까?

파일을 "cat"하고 주석 처리된 줄을 제거하는 방법은 무엇입니까?

cat보관 php.ini하고 삭제 하는 방법이 있는지 궁금합니다;

예를 들어, 파일에 다음 내용이 포함되어 있는 경우:

;   - Show all errors, except for notices
;
;error_reporting = E_ALL & ~E_NOTICE
;
;   - Show only errors
;
;error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR
;
;   - Show all errors except for notices
;
error_reporting  =  E_ALL & ~E_NOTICE

올바른 명령을 실행하면 cat | {remove comments command}다음과 같이 끝납니다.

error_reporting  =  E_ALL & ~E_NOTICE

노트- 이것이 가장 좋은 방법이라고 생각 하지만 cat다른 유틸리티(예: , , 등)를 사용한 awk답변에 실제로 만족합니다.sedegrep

답변1

grep을 통해 파일을 파이프할 필요가 없습니다. grep은 파일 이름을 명령줄 인수로 사용합니다.

grep -v '^#' file1 file2 file3

# 문자로 시작하는 모든 줄이 인쇄됩니다. 주석 문자를 원하는 대로 변경할 수 있습니다.

주석 문자가 여러 개 있는 경우(줄의 시작 부분에 있다고 가정)

egrep -v '^(;|#|//)' filelist

답변2

당신은 그것을 사용할 수 있습니다 :

sed -e '/^;/d' php.ini

답변3

egrep사용량을 저장할 수 있습니다 cat. 즉, 더 적은 수의 프로세스를 생성하고( egrep+ cat) egrep더 적은 버퍼를 사용합니다( cat파이프에서 파이프로 연결 egrepvs. 파이프 없음).

cat파일 자체를 읽을 수 있는 명령에만 파일을 전달하려는 경우 일반적으로 사용을 제한하는 것이 좋습니다.

하지만 다음 명령은 공백이나 탭으로 들여쓰기된 주석을 제거합니다.

egrep -v '^[[:blank:]]*;'file.ini

답변4

grep -Ev ^'(#|$)' file.txt

file.txt에서 모든 주석과 빈 줄을 제거합니다.

Yokai의 의견을 바탕으로 답변이 업데이트되었습니다. "egrep 또는 fgrep을 직접 호출하는 것은 더 이상 사용되지 않지만 이에 의존하는 기록 애플리케이션을 수정 없이 실행할 수 있도록 제공됩니다."https://www.gnu.org/software/grep/manual/grep.html

관련 정보