특정 정규 표현식과 일치하는 파일 부분의 문자를 교체해야합니다. 정확히 말하면, -
잘못된 마크 다운 링크 가 있는 공백을 제거해야 합니다. 예 :
[This is my link](actual bad link.md)
다음과 같아야합니다.
[This is my link](actual-bad-link.md)
sed의 정규 표현식으로 시작 (
하고 끝나는 것을 일치시킬 수 .md)
있지만 일치하는 표현식의 공백 만 sed에 바꾸도록 지시하는 방법을 모르겠습니다. 이 작업을 수행하는 방법이 있습니까 (예 : awk와 같은 다른 명령 줄 도구로도 가능)?
감사.
편집 : 최소로, 나는 사이의 모든 공백을 대체 어떤 명령을 드리겠습니다 (
과 .md)
함께 -
.
라인 당 하나의 인스턴스없이 중첩 된 괄호를 들어, 당신은 이런 식으로 뭔가를 함께 할 수 match
및 substr
:
$ echo '[This is my link](actual bad link.md) other stuff' | awk '
match($0,/\([^)]*\.md\)/){
s = substr($0,RSTART,RLENGTH); gsub(/ /,"-", s);
print substr($0,1,RSTART-1) s substr($0,RSTART+RLENGTH)}
'
[This is my link](actual-bad-link.md) other stuff
GNU awk는 매치 그룹을 배열로 캡처하는 비표준 확장 기능을 가지고 있지만 IMO는 여기서 많이 구매하지 않습니다.
match
전역 대체를 달성하기 위해 루프를 실행할 수 있지만 Perl이 더 나은 옵션 일 수 있습니다.
$ echo '[This is my link](actual bad link.md) other stuff' | perl -pe '
s{(\(.*?\.md\))}{$1 =~ s/ /-/gr}ge
'
[This is my link](actual-bad-link.md) other stuff
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다