퀴즈: bash를 사용한 파일 내 문자열 교체
실제 작업에서 가져온 오늘의 퀴즈는 다음과 같습니다.
replace a string in a file using bash.
전제 조건
동적으로 생성된 변수
newPath
가 있습니다.newPath=/new/path/$(date +"%Y%m%d%H%M%S")/file.json
PATH_TO_FILE
에서 newPath
의 값으로 /app/.env
의 값을 변경하려고 합니다.교체 전 파일:
# /app/.env
# there could be lines here
PATH_TO_FILE=/path/to/file.json
# there could be lines here too
교체 후 파일:
# /app/.env
# there could be lines here
PATH_TO_FILE=/new/path/20220630081234/file.json
# there could be lines here too
시작 스크립트
#!/usr/bin/env bash
newPath=/new/path/$(date +"%Y%m%d%H%M%S")/file.json
# your code here
이것에 대한 나의 견해
내 솔루션을 보려면 클릭하십시오.
#!/usr/bin/env bash
newPath=/new/path/$(date +"%Y%m%d%H%M%S")/file.json
sed -iE "s|(PATH_TO_FILE).*|\1=${newPath}|g" /app/.env
-i
옵션은 제자리를 의미합니다. 따라서 /app/.env
에 대한 모든 변경 사항이 저장됩니다.-E
는 확장 정규식을 나타냅니다.전통적으로 우리는 예를 들어
/
를 교체할 때 s/to_be_replaced/replacement/g
를 사용합니다.파일 경로를 다루기 때문에
newPath
에서 슬래시를 이스케이프 처리해야 하지만 더 좋은 방법이 있습니다. 다른 구분 기호를 사용하는 것입니다. 여기서는 |
를 사용하고 있지만 원하는 경우 @
를 사용할 수 있습니다.\1
는 우리의 경우 PATH_TO_FILE
인 괄호로 캡처된 것을 보유합니다.그리고 그게 다야!
이 솔루션을 개선하는 방법에 대한 의견을 환영합니다.
즐거운 코딩하세요! ⌨️
Reference
이 문제에 관하여(퀴즈: bash를 사용한 파일 내 문자열 교체), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/joolsmcfly/quiz-in-file-string-replacement-using-bash-20i8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)