2014-10-30 2 views
0
나는 레일 프로젝트에 자식을 사용하고

를 가진 파일에서 텍스트를 교체하고 내가 가진 따옴표 (')를 빼고 대괄호 안에 교체하십시오 (user_name: ENV['GMAIL_SMTP_USER'],). 이를 수행하기 위해 sed--tree-filter을 사용하고 있습니다. 마찬가지로 다음오래된 최선을 다하고 파일에 다음 줄을 SED

git filter-branch --tree-filter "sed -i .bkp s/'ENV[GMAIL_SMTP_USER]'/ENV['GMAIL_SMTP_USER']/g config/environments/development.rb" -f 

이 명령은 오류없이 잘 실행하지만 따옴표를하지 않습니다. 또한, 나는 그 전에, 내가 성공적으로 문제는 따옴표를 제거하기 만하다 user_name: 'myGmailUserName'

user_name: 'ENV[GMAIL_SMTP_USER]'에 업데이트하는 데 사용 했으므로 명령이 정말 교체를 위해 작동하는지 말할 수있다. 없어진 물건 있어요?

미리 감사드립니다. 검색 패턴에 \

+0

나는'-i'와'.bkp' 사이의 공간을 제거하면됩니다. – ooga

+0

@ooga에 답해 주셔서 감사합니다. 그러나 작동하지 않았습니다. 오류없이 실행되지만 따옴표의 위치를 ​​변경하지는 않습니다. –

답변

0

, 나는 탈출에 문제가 있었다, 그러나 인용 자체였다. 또한 탈출과 함께 왜 내가 작업하고 있던 저장소 (복제 된 저장소 (백업))와도 작동하지 않는 이유는 모르겠다.

git filter-branch --tree-filter "sed -i.bkp s/\'ENV[GMAIL_SMTP_USER]\'/ENV[\'GMAIL_SMTP_USER\']/g config/environments/development.rb" -f 

합니까 사람이 더 나은 해답이 있습니다

그래서, 나는 다음과 같은 탈출 따옴표를 새로운 복제 저장소를 생성 및 실행? 어쩌면 첫 번째 복제 저장소에서 작동하지 않는 이유를 설명 할 수 있습니다 ...

+0

자신의 게시물에 응답하지 말고 원래 게시물을 편집해야합니다. – Jotne

+0

@Jotne, Stack Exchange는 실제로 사람들이 자신의 질문에 대답하도록 장려합니다. 참조 : http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/ –

+0

질문에 답변해도되지만 괜찮습니다. 당신의 대답에 더 많은 질문을하십시오. 이 경우에 편집해야합니다. –

2

탈출 [] :

echo "user_name: 'ENV[GMAIL_SMTP_USER]'," | sed "s/user_name: 'ENV\[GMAIL_SMTP_USER\]',/user_name: ENV['GMAIL_SMTP_USER'],/" 

출력 : 사이러스가 제안한 것처럼

user_name: ENV['GMAIL_SMTP_USER'], 
+0

명령이 터미널에서 작동하지만 git filter-branch 매개 변수에 넣으면 다음과 같은 오류가 나타납니다. "s /": 대체되지 않은 대체 패턴. 나는 동일한 저장소에서 따옴표를 이스케이프 처리하여 해결책을 찾았다. 행운의, 나는 진짜 저장소의 클론에 대해 작업하고 있었다. 복제 된 저장소에서 따옴표를 이스케이프 처리하려고 시도했지만 작동하지 않는 이유를 모르겠습니다. 새로운 복제 된 저장소를 사용하여 작동했습니다 ... 그림보기 ... 나는 응답을 게시하고 가능한 이스케이프 문제를 지적하기 위해 업 포워드 할 것입니다! 고마워요! –

관련 문제