파일 내용을 수정하는 방법은 무엇입니까? [복사]

파일 내용을 수정하는 방법은 무엇입니까? [복사]

우분투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으로 시작하는 줄, filefrom으로 시작하는 줄, 공백으로 시작하는 줄은 둘 다 공통입니다.+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

관련 정보