shellスクリプトを使用してxmlファイル出力をフォーマットする

1545 ワード

xmlファイルの内容
test.xmlファイル

        
        
        
                
        

要求出力の内容:name=console class=org.apache.log4j.ConsoleAppender
shellスクリプトハンドラ:
checkXml.sh
#     checkXml.sh ,  name=console
filepath='/app/install/shell/test.xml'

checkXml(){
    grep -oP "]+$1=\"\K[^\"]+(?=\"\s*[c>])" $filepath
}

NAME=`checkXml name`
CLASS=`checkXml class`


echo "name=${NAME}"
echo "class=${CLASS}"

出力結果の実行:
[root@shell]# ./checkXml.sh 
name=console
class=org.apache.log4j.ConsoleAppender

スクリプト・プログラムの説明:
  grep -oP "]+$1=\"\K[^\"]+(?=\"\s*[c>])"$filepath
-o:正確に一致し、行全体を出力せず、一致する文字内容のみを出力
K:モード使用,(1)K(?=b),(1)タプル条件が満たされた場合は、(?=b)終了までマッチング出力を行う
「]+$1=」:パラメータに一致し、終了を含む.+1つ以上の文字です.$1=入力パラメータ="は、左に配置された引用符です.
K以降(?=b)の部分まで出力すると、一致する中間の部分、つまりこの部分を出力します[^"]+,"で始まり、+1文字以上になります.(?="s*[c>])まで出力します.「は引用符、s空白文字*で使用される0文字以上、[c>]cまたは>末尾です.