
이에 대한 예가 있습니다링크에 대한 sed
:
"#"으로 시작하는 모든 줄의 첫 번째 숫자를 삭제하려면 다음을 사용하세요.
sed '/^#/ s/[0-9][0-9]*//'
첫 번째 패턴( )의 이점은 무엇입니까 /^#/
? 그것은 간단할 수 있습니다:
sed 's/^#[0-9][0-9]*//'
답변1
일반적인 sed
명령 형식은 다음과 같습니다.
[address[,address]] function
명령에 단일 주소가 있는 경우 해당 주소와 일치하는 모든 행에서 작동합니다. 명령에 주소가 없으면 모든 단일 라인에서 작동합니다.
참조:POSIXsed
구체적인 예와 관련하여:
/^#/ s/[0-9][0-9]*//
/^#/
이 명령에는 로 시작하는 모든 줄과 일치하는 주소가 있습니다#
.대체 패턴은
/[0-9][0-9]*/
. 이는 줄에서 나타나는 첫 번째 숫자 시퀀스와 일치합니다.일반 영어 요약: 로 시작하는 모든 줄의 첫 번째 숫자 시퀀스를 삭제합니다
#
.예:
# non-digits|5555|non-digits|5555
된다# non-digits||non-digits|5555
s/^#[0-9][0-9]*//
주소가 없으므로 이 명령은 모든 단일 라인에서 작동합니다.
대체 패턴 은
/^#[0-9][0-9]*/
앞에 a가 붙은 일련의 연속 숫자와 일치합니다.#
고정된줄의 시작 부분에.일반 영어 요약:
#
모든 줄의 시작 부분부터 일련의 숫자(및 해당 패턴만)가 뒤따르는 삭제입니다.예: 가
#5555|non-digits|5555
되지만 대체 패턴이 일치하지 않기 때문에 변경되지 않습니다.|non-digits|5555
# non-digits|5555|non-digits|5555
답변2
첫 번째는 일치하고 대체됩니다.
#abc99
두 번째는 그렇지 않습니다.
또한 두 번째는 초기 #
.