우분투16.04
꽤 큰 파일이 있어서 수동으로 수정할 수 없습니다. 다음 항목을 모두 변경하고 싶습니다.
<tag1>true</tag1>
도착하다
<tag1>false</tag1>
답변1
당신은 그것을 사용할 수 있습니다
sed -e 's|<tag1>false</tag1>|<tag1>true</tag1>|g' -i file
파일 사본을 편집하는 것을 권장하지만,
sed -e 's|<tag1>false</tag1>|<tag1>true</tag1>|g' file > newfile
less
새로운 콘텐츠가 IE에서 허용되는지 확인 하는 데 사용됩니다 .
less newfile
편집: g
패턴 끝에 수정자를 기록해 두세요. 한 줄에 여러 개의 일치 항목이 있는 경우 이 작업이 필요합니다. 존재 하는 경우 g
행의 모든 항목이 대체됨을 의미합니다. 또한 전체 태그 대신 고려하는 것도 고려할 수 있습니다.
sed -e 's|>false<|>true<|g' file > newfile
아마도
sed -e 's|>[Ff]alse<|>true<|g' file > newfile
>false<
이렇게 하면 및 가 모두 >False<
로 변경됩니다 >true<
.
diff
위 명령 중 하나를 사용한 후 두 파일을 비교하는 데 사용할 수 있습니다 . 한 가지 옵션은
diff --side-by-side file newfile | less
하지만 줄이 길면 작동하지 않습니다. 이것"차이의 통일성"일반적으로 사용되는 형식,
diff -u file newfile | less
-
from으로 시작하는 줄, file
from으로 시작하는 줄, 공백으로 시작하는 줄은 둘 다 공통입니다.+
newfile
답변2
정확한 발생 항목만 바꾸려는 경우
<tag1>true</tag1>
도착하다
<tag1>false</tag1>
당신은 그것을 사용할 수 있습니다
sed -r 's@<(tag1)>true</\1>@<\1>false</\1>@g' infile >outfile
또는
sed -ri 's@<(tag1)>true</\1>@<\1>false</\1>@g' file
변경된 데이터가 새 파일에 기록되는 것을 원하지 않는 경우.
답변3
명령을 통해 수행하는 것은 쉽습니다 sed
.
빨리 달려:
sed 's/true/false/' file > newfile