내 파일에는 스크립트를 사용하여 조정하려는 다음 줄이 포함되어 있습니다.
module.exports = {
parserOptions: {
project: ['./tsconfig.json'],
},
... more stuff here
}
그래서 이렇게 보입니다. 나는 결과의 공백에 대해별로 신경 쓰지 않습니다.
module.exports = {
parserOptions: {
project: ['./tsconfig.json'],
tsconfigRootDir: __dirname
},
... more stuff here
}
내가 지금 가지고 있는 것은 다음과 같습니다.
sed -r "s/project:\s*\['.\/tsconfig.json'\],/project:\['.\/tsconfig.json'\],\ntsconfigRootDir\:__dirname/g" filename
그러나 그것은 일치하지 않았습니다. 이 웹사이트에서 일치 패턴을 시도했습니다.https://sed.js.org/index.html?snippet=y7KG95거기에서 내가 원하는 결과를 얻었습니다. 나는 또한 사용해 보았지만 sed -E
운이 없었습니다.
스크립트 설정이 잘 작동한다고 말하고 싶습니다. 그렇게 간단한 것을 변경하면 s/project/projectA/g
잘 작동하기 때문입니다.
감사해요!
macOS Monterey 12.5.1 사용
답변1
-r
모두 GNU-isms인 , \s
및 로 \n
대체하고 있습니다 ( \s
물론 Perl'ism에 더 가깝습니다). 이것도 \:
비표준입니다. 그런데 당신이 \
눈앞에서 .
사라졌어요
표준적으로 구문은 다음과 같습니다.
sed 's@^\([[:blank:]]*\)project:[[:blank:]]*\['\''\./tsconfig\.json'\''\]@&,\
\1tsconfigRootDir: __dirname@g' filename
[[:blank:]]
\s
(음, \s
더 많을 것이지만 여기서는 공백( perl에서) [[:space:]]
과 일치하기에 충분해야 함 ) 대신 에 개행 문자를 대체에 포함시키기 위한 개행 문자가 뒤따릅니다.\h
\
project
추가된 줄을 동일한 들여쓰기로 들여쓰기하기 위해 줄의 선행 공백을 캡처합니다 ( \1
캡처 그룹 호출).
구문 확인당신의 sed
구현 및 버전 확인그것은다양한 구현이나 버전을 설명할 수 있는 인터넷의 임의 페이지를 포함하거나 대신하는 man
문서 입니다 .info
sed
이 유틸리티에 대한 POSIX 2018 표준 사양도 참조하세요.거기.