フォルダ内のXMLファイルのリストをUTF-16からUTF-8に変換し、BOMを削除して、ファイル内のキーワードをUTF-16からUTF-8に置き換える必要があります。xmlファイルのテキストをSEDで検索して置き換える方法は?
私はこれを達成するためにbashシェルスクリプトを実行するためにcygwinを使用していますが、今日はSEDで作業したことがありません。
BOMを削除するためのSEDライナーが1つ見つかりましたが、xmlヘッダーのテキストをUTF-16からUTF-8に置き換える必要があります。
これは私がこれまで持っているものです。
#!/bin/bash
mkdir -p outUTF8
#Convert files to unix format.
find -exec dos2unix {} \;
#Use a for loop to convert all the xml files.
for f in `ls -1 *.xml`; do
sed -i -e '1s/^\xEF\xBB\xBF//' FILE
iconv -f utf-16 -t utf-8 $f > outUTF8/$f
sed 's/UTF-16/UTF-8/g' $f > outUTF8/$f
echo $f
done
はしかし、この行:
sed 's/UTF-16/UTF-8/g' $f > outUTF8/$f
は、スクリプトをぶら下げています。これのための適切な形式としての任意のアイデア?
なぜ 'sed '/ UTF-16/UTF-8/g'の代わりに' sed -i '/ UTF-16/UTF-8/g' outUTF8/$ f'をしないのですか? > outUTF8/$ f' –
これは唯一の問題ではありませんが、\ 'ls -1 * .xml \'のfのために変更します。 'f * in * .xlm'と' $ f'から '' $ f "'へと 'do'を実行します。 –
これは、ファイルにスペースが含まれていることを防ぐためです。また、 'sed -i -e '1s/^ \ xEF \ xBB \ xBF //' FILE'' FILE'とは何なのですか? –