아래와 같이 다음 sed
문자 클래스를 사용합니다.[^[:space:]]
orig="(\`\`\`)([^[:space:]]*)";
new="\1{.\2 .numberLines startFrom=\"1\" .lineAnchors}";
sed -i -r -e "s|${orig}|${new}|g" ${InterimFilePath} ;
입력하다:
```bash
ls
```
산출:
```{.bash .numberLines startFrom="1" .lineAnchors}
ls
```{.bash .numberLines startFrom="1" .lineAnchors}
예상 출력:
```{.bash .numberLines startFrom="1" .lineAnchors}
ls
```
어떤 제안이 있으십니까? 캐릭터 클래스도 시도해 보았지만 [[:alnum:]]
결과는 위와 같습니다.
답변1
sed
GNU 및 OpenBSD에서 기본을 사용하여 얻은 출력은 sed
다음과 같습니다.
```{.bash .numberLines startFrom="1" .lineAnchors}
ls
```{. .numberLines startFrom="1" .lineAnchors}
표정이 일치해서 그런가영백틱 세 개 뒤에 공백이 아닌 문자가 하나 이상 나옵니다. 강제 일치 [^[:space:]]*
로 변경[^[:space:]]+
마지막 하나공백이 아닌 문자.
이것은 예상되는 출력을 제공합니다
```{.bash .numberLines startFrom="1" .lineAnchors}
ls
```
변수 할당에 작은따옴표를 사용할 수도 있습니다. 이렇게 하면 셸에서 문자열을 보호하기 위해 특수 문자를 이스케이프 처리할 필요 없이 문자열이 더 깔끔하게 보입니다.
orig='(```)([^[:space:]]+)'
new='\1{.\2 .numberLines startFrom="1" .lineAnchors}'
sed -i -E "s|$orig|$new|g" "$InterimFilePath"
답변2
이 시도,
orig="(\`\`\`)([[:alnum:]]+)";
new="\1{.\2 .numberLines startFrom=\"1\" .lineAnchors}";
sed -i -r -e "s|${orig}|${new}|g" ${InterimFilePath} ;
산출
```{.bash .numberLines startFrom="1" .lineAnchors}
ls
```
+
대신 을 사용*
하면*
모든 것과 일치합니다.