여기에 예가 있습니다.협회에 대한 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]*/
뒤에 오는 일련의 연속 숫자와 일치합니다.#
고정된줄의 시작 부분에.일반 영어 요약:
#
각 줄의 시작 부분에서 다음 숫자 시퀀스(및 해당 패턴만)를 제거합니다.예:
#5555|non-digits|5555
로 변경되지만|non-digits|5555
교체# non-digits|5555|non-digits|5555
패턴이 일치하지 않아 변경되지 않은 상태로 유지됩니다.
답변2
첫 번째 항목은 일치하고 대체됩니다.
#abc99
두 번째는 그렇지 않습니다.
또한 두 번째 항목도 원본을 삭제합니다 #
.