shellスクリプトを使用してxmlファイル出力をフォーマットする
1545 ワード
xmlファイルの内容
test.xmlファイル
要求出力の内容:name=console class=org.apache.log4j.ConsoleAppender
shellスクリプトハンドラ:
checkXml.sh
出力結果の実行:
スクリプト・プログラムの説明:
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または>末尾です.
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または>末尾です.