0

bash のファイル内の正規表現に一致する XML 属性の値を置き換えたいと考えています。

 <Resource name="MailSession" auth="Container" type="javax.mail.Session"
            mail.smtp.host="localhost" mail.smtp.user="foo" mail.smtp.passwd="12345678"
            mail.pop3.host="localhost" mail.pop3.user="foo" mail.pop3.passwd="12345678"/>

に変換する必要があります

 <Resource name="MailSession" auth="Container" type="javax.mail.Session"
            mail.smtp.host="***" mail.smtp.user="foo" mail.smtp.passwd="***"
            mail.pop3.host="***" mail.pop3.user="foo" mail.pop3.passwd="***"/>

これは、sed または awk を使用して可能になるはずです。

4

3 に答える 3

1

XML ファイルの名前が「test.xml」の場合、次のことができます。

cat test.xml | sed 's/host="[^"]*/host="***/g' | sed 's/passwd="[^"]*/passwd="***/g'

他の場所 (HTTP 接続など) からファイルを読み取る場合は、パイプの最初のコマンドを変更できます。

于 2013-09-19T10:33:44.820 に答える
1

使用するawk

 awk -F\" '/host/ {$2=$6="***"}1' OFS=\" file
<Resource name="MailSession" auth="Container" type="javax.mail.Session"
            mail.smtp.host="***" mail.smtp.user="foo" mail.smtp.passwd="***"
            mail.pop3.host="***" mail.pop3.user="foo" mail.pop3.passwd="***"/>
于 2013-09-19T11:56:51.573 に答える