2016-06-18 16 views
0

てxmlファイルに@で始まる文字列を検索する方法を/opt/app/rty/servers/tr/current/ops/config私は次のディレクトリに別のXMLファイルを持っているUNIX

はのは、これらのXML内で今

abc.xml 
bv.xml 
ert.xml 

をという名前の3つのファイルがあるとしましょう今

<bean id="sdrt" class="com.interfaces.send.erty">     
    <property name="eprocDependentOnClientAddress"><value>@[email protected]</value></property> 
    <property name="eprocDependentOnClientAddressEod"><value>tyu</value></property>     
</bean> 

の下に表示などの多くのタグがあることができ、私の目的のディレクトリは/ opt /アプリ/ RTY /サーバ/ TR /現在/ OPS/configの内側に私が検索する必要があるということですすべてのxmlファイルとは

はのは、以下のファイルを上記のXMLで例えばとしましょう何の価値@タグから始まり、また、@タグで終わるがあってはならないプロパティタグへのコンテキスト内のすべてのXMLでそれを見つけなければならないことは正しいです

<property name="eprocDependentOnClientAddressEod"><value>tyu</value></property> 

が、以下の修正されていない

<property name="eprocDependentOnClientAddress"><value>@[email protected]</value></property> 

ので、プロパティタグ内@で始まるタグが存在するものをXMLでファイル名を検索するには、UNIXでのコマンドがどうなるかをアドバイスしてください

答えて

1

#!/bin/bash 
for line in `ls *.xml`; do 
a=`egrep -o "<value>@"\|"@</value>" $line` 
    if [[ "$a" == "<value>@"* && "$a" == *"@</value>" ]]; then 
     printf "File $line has issues.\n" 
    else 
     printf "File $line is clean.\n" 
    fi 
done 

そして<value>タグ内からの置き換えに@必要がある場合は、このシェルを使用して、ファイルの内容は<value>@@</value>文字列を持って見つけることができます。

#!/bin/bash 
for line in `ls *.xml`; do 
a=`egrep -o "<value>@"\|"@</value>" $line` 
    if [[ "$a" == "<value>@"* && "$a" == *"@</value>" ]]; then 
     printf 'File $line has issues.\n' 
     sed -e 's/<value>@//g' -e 's/@<\/value>//g' $line > ${line}.replaced 
    fi 
done 
+0

多くはまた、その上に示したように、@がとしてタグがなければならないと@タグの後にとしてタグが存在します開始する前に、私たちはそのあたりとしてスクリプトを変更できることをアドバイスしてくださいおかげも –

+0

コードを編集要件に合わせるお役に立てれば。 – syadav

+0

上記のスクリプトを変更するには、ディレクトリの場所を入力する必要があります。 –

関連する問題