이 명령이 무엇을 하는지 알아야 합니다.
sed '/^#/d' ~/.profile
이 명령이 제공하는 출력은 다음과 같습니다.
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
나는 다음 명령을 알고 있습니다.
sed '/^$/d' file.txt
에서 빈 줄을 삭제한다는 의미입니다 file.txt
.
나는 이것이 #
명령이나 주석의 끝을 의미할 수 있다는 것을 알고 있습니다.
나는 $
그것이 명령이 시작된다는 것을 의미한다는 것을 알고 있습니다.
구체적인 명령은 무엇입니까?
sed '/^#/d' ~/.profile
하다?
답변1
명령 sed
줄
sed '/^#/d' ~/.profile
~/.profile
다음 두 줄 중 첫 번째 줄과 같이 파일의 줄 시작 부분에서 시작하는 모든 셸 주석을 제거 하지만 두 번째 줄은 제거하지 않습니다.
# comment
# indented comment
이는 #
줄의 시작 부분( )에서 ^
일치를 시도하고 d
일치하는 줄을 제거( )합니다.
쉘 스크립트에서 들여쓰기된 주석을 제거하려면 다음을 사용하십시오.
sed '/^[[:blank:]]*#/d' file
[[:blank:]]
공백 문자 및 가로 탭 문자와 일치합니다.
$
명령줄에 무언가를 입력하라는 메시지를 표시하기 위해 쉘에서 사용하는 일반적인 프롬프트이기 때문에 "명령의 시작"을 의미합니다.
#
쉘에서 주석을 소개하는 문자입니다. 입력 1sed
에서 a 를 일치시키는 것 외에는 스크립트에서 역할이 없습니다 . 나는 그것이 "명령의 끝"을 의미하는 것을 본 적이 없습니다.#
1 이 역할은 명령 사이에 사용되는 경우 #
스크립트에 주석을 추가합니다 .sed
답변2
/^#/
^
( ) 로 시작하는 행 과 일치합니다 #
. d
삭제하세요. 기본 동작은 해당 sed
행을 인쇄하는 것이므로( -n
지정되지 않은 경우) 다른 내용도 인쇄됩니다.
나는 이것이
#
명령이나 주석의 끝을 의미할 수 있다는 것을 알고 있습니다.나는
$
그것이 명령이 시작된다는 것을 의미한다는 것을 알고 있습니다.
음 ... 아니. 정규식에서는 ^
문자열(또는 줄)의 시작과 끝을 표시합니다 $
. #
주석 문자로 사용되므로 일반적으로 줄의 시작 부분에 사용됩니다.
주석 문자로 사용되는 많은 #
파일에서는 명령 뒤에 사용할 수 있지만 줄 시작 부분에는 직접 사용할 수 없습니다. 예제 출력의 나머지 주석에 표시된 것처럼 들여쓰기가 가능합니다.
/^ *#/d
들여쓰기된 주석도 제거하므로 ( 또는 ) 와 같은 /^[ \t]*#/d
것이 더 나을 수 있습니다.