Ubuntu16.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
パターンの最後に修飾子を書き留めます。 1行に複数の一致がある場合は、これが必要です。存在する場合、g
行のすべての項目が置き換えられることを意味します。また、タグ全体の代わりに考慮することも考えられます。
sed -e 's|>false<|>true<|g' file > newfile
おそらく
sed -e 's|>[Ff]alse<|>true<|g' file > newfile
>false<
これにより、とがすべて>False<
に変わります>true<
。
diff
上記のコマンドのいずれかを使用した後、2つのファイルを比較するために使用できます。一つの選択肢は
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