false###File.txt
many rows
###online = false --> ONE SHOT import (delete all table contents before importing)
###online = true --> DIFFERENTIAL import (import without clean the table contents)
###online = true
many rows
온라인에서 행만 선택하고 true를 false로 바꾸고 싶지만 3행일 필요는 없으며 파일의 어느 곳에나 나타날 수 있습니다.
내 시도: test.sh
online=true
perl -i -p -e "s/^(online[ ]*=[ ]*).*$/\1 $online/" File.txt
작업을 수행하지만 false 앞에 공백을 추가합니다. 누군가가 true라는 단어 앞에 공백을 추가하지 않도록 위 명령을 수정할 수 있습니까?
답변1
당신은 시도 할 수 있습니다 sed
:
sed -i '3s/true/false/' file.txt
원본 파일을 다음과 같이 유지하려는 경우 file.txt.bak
:
sed -i.bak '3s/true/false/' file.txt
또한 같은 줄에서 여러 번 나타나는 with 를 바꾸려면 다음을 수행하십시오 true
.false
sed -i.bak '3s/true/false/g' file.txt
편집하다:귀하의 명확한 질문에 따라 다음을 시도해 보십시오.
sed -i.bak '/DIFFERENTIAL\|[^t][^r][^u][^e]$/!s/true/false/' file.txt
이렇게 하면 "DIFFERENTIAL"이 없는 행과 행 끝에 "true"가 나타나는 행에서 "true"가 "false"로 대체됩니다.
답변2
다음 명령이 도움이 된다는 것을 알았습니다.
sed '/DIFFERENTIAL/!s/true/false/g'