일부 자격 증명이 저장된 일부 파일이 있고 쉘 스크립트를 통해 파일을 읽고 현재 자격 증명이 검색된 문자열과 일치하는지 확인하고 해당 위치에서만 바꾸도록 하려고 합니다.
아래 코드를 시도했지만 항상 추가되고 문자열을 바꾸지도 않습니다.
cat $FILESOURCE | sed -e "s/$TEXTTOSEARCH/$TEXTTOREPLACE/g" >> $FILESOURCE
어디
FILESOURCE
= 읽고 싶은 .txt 파일TEXTTOSEARCH
= 검색할 문자열TEXTTOREPLACE
= 바꿀 텍스트
참고: 기존 파일을 엉망으로 만들고 싶지 않고 읽기 위해 파일을 열고 검색 문자열이 있는지 확인한 다음 교체하고 그렇지 않은 경우 파일에 아무 작업도 수행하지 않습니다.
답변1
물론 를 사용하고 있기 때문에 추가됩니다 >>
. 이는 추가를 의미합니다.
당신 안에는 무엇이 들어있나요 $TEXTTOSEARCH
? 문자만 있나요? 아니면 특수 문자가 있나요? 정규식에 특별한 의미를 갖는 특수 문자가 있는 경우 이스케이프해야 제대로 작동합니다. 모든 문자를 나타냅니다 .
. \.
.see 로 바꿔야 합니다 $TEXTTOSEARCH
.여기자세한 내용은.
파일을 처리하는 방법에는 여러 가지가 있습니다. 나는 당신이 사용하는 것이 좋습니다
sed -i.bak -e "s/$TEXTTOSEARCH/$TEXTTOREPLACE/g" $FILESOURCE
이 방법으로 sed는 파일의 텍스트를 바꾸고 .bak
확장자로 백업합니다. 다른 방법을 원하시면 더 자세한 내용을 기재해주세요. 기존 파일을 엉망으로 만들고 싶지 않고 해당 파일의 텍스트를 바꾸고 싶기 때문에 귀하의 질문이 명확하지 않습니까?