我必須將文件夾中的xml文件列表從UTF-16轉換爲UTF-8,刪除BOM,然後將文件中的關鍵字從UTF-16替換爲UTF-8。如何使用SED搜索和替換xml文件中的文本?
我正在使用cygwin運行bash shell腳本來完成此操作,但在今天之前我從未使用過SED,因此我需要幫助!
我發現了一個用於刪除BOM的SED單個內襯,現在我需要另一個用於在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'outUTF8/$ f'而不是'sed's/UTF-16/UTF-8/g'$ f > outUTF8/$ f' – 2011-12-22 23:27:33
這不是唯一的問題,而是改變''ls -1 * .xml'中的f'; ''爲f中的* .xlm'和'$ f'爲'「$ f」' – 2011-12-22 23:29:09
是的,我同意這將阻止它拆分其中有空格的文件。另外,'sed -i -e'1s/^ \ xEF \ xBB \ xBF //'FILE'我真的不知道'FILE'是什麼,它的目的是什麼? – 2011-12-22 23:53:39