2

私たちのアプリケーションは、XMLデータのレトロ分析を行うための受信側にあります。このアプリケーションにはJavaまたは.NETはありませんが、Unixで実行されるため、awkとPerlがあります。

ファイル内のXMLメッセージには次のものが含まれます。

<?xml version="1.0" encoding="ISO-8859-1" ?> 

Perlとawkでいくつかのオプションを試し、それらを削除しましたが、これらを機能させることができませんでした。

perl -p -i -e "s/<?xml version="1.0" encoding="ISO-8859-1" ?>//g"  inputFile
perl -p -i -e "s/<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>//g"  inputFile
perl -p -i -e "s/<\?xml version="1.0" encoding="ISO-8859-1" \?>//g"  inputFile

PERLまたはAWKを使用してこれを行う他のオプションはありますか?

4

2 に答える 2

1

これは、データファイルを上書きせずに機能しました。

perl -p -e 's/<\?xml version="1.0" encoding="ISO-8859-1" \?>//g'

-i基本的な正規表現が損傷することなく機能していることが確実な場合にのみ、ファイル()を上書きします。

于 2012-10-09T15:08:14.407 に答える
1

You don't have to match the whole string if your file is XML. <?xml version is enough.

Try:

sed -i '/<\?xml version/d' file

test

kent$  echo '<?xml version="1.0" encoding="ISO-8859-1" ?> 
foo
bar
xyz
hello
there'|sed '/<\?xml version/d' 
foo
bar
xyz
hello
there
于 2012-10-09T14:17:56.767 に答える