sed에서 대체 명령 전 패턴 사용법은 무엇입니까

sed에서 대체 명령 전 패턴 사용법은 무엇입니까

이에 대한 예가 있습니다링크에 대한 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

두 번째는 그렇지 않습니다.

또한 두 번째는 초기 #.

관련 정보