我必须将文件夹中的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