다음과 같은 문자열이 있습니다.func showFetchNextSliceFailed(result: UserResult<[Product]>) {
이것으로부터 나는 생각한다 1). 2) 만 추출합니다 showFetchNextSliceFailed
. 처럼 주어진 행 바로 위에 삽입하세요 #Mark showFetchNextSliceFailed
.
func showProductsList(result: UserResult<[Product]>) {
}
func showFetchNextSliceFailed(result: UserResult<[Product]>) {
}
예상 출력:
#Mark showProductsList
func showProductsList(result: UserResult<[Product]>) {
}
#Mark showFetchNextSliceFailed
func showFetchNextSliceFailed(result: UserResult<[Product]>) {
}
grep과 sed를 사용해 보았지만 여전히 문자열을 추출하고 교체하는 방법을 올바르게 파악할 수 없습니다.
답변1
그리고sed
- 일치하는 패턴 공간을 복사하여 공간 절약
- 패턴 공간 수정
- 예약된 공간에서 원본 콘텐츠를 복원하고 추가합니다.
전임자.
$ sed '/func show/ {h; s/func \(show[^(]*\).*/#Mark \1/; G;}' file
#Mark showProductsList
func showProductsList(result: UserResult<[Product]>) {
}
#Mark showFetchNextSliceFailed
func showFetchNextSliceFailed(result: UserResult<[Product]>) {
}
답변2
다음 파일이 있는 경우 code
:
입력하다:
$more code
func showProductsList(result: UserResult<[Product]>) {
}
func showFetchNextSliceFailed(result: UserResult<[Product]>) {
}
주문하다:
perl -i.bak -pe "s/^^( *|\t*)func\s(\w+)func\s(\w+)/\1#Mark \2\n\1func \2/g" code
산출:
#Mark showProductsList
func showProductsList(result: UserResult<[Product]>) {
}
#Mark showFetchNextSliceFailed
func showFetchNextSliceFailed(result: UserResult<[Product]>) {
}
설명하다:
-i.bak
perl
입력 파일 백업을 위한 내부 모드s/^( *|\t*)func\s(\w+)func\s(\w+)/\1#Mark \2\n\1func \2/g
패턴 찾기 및 바꾸기 세부정보는 다음 위치에 있습니다.데모