亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2027 | 回復(fù): 8
打印 上一主題 下一主題

[文本處理] 使用shell腳本根據(jù)父子節(jié)點(diǎn)修改xml文件 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2016-08-16 13:49 |只看該作者 |倒序?yàn)g覽
現(xiàn)在有如下xml文件,想使用shell腳本進(jìn)行修改,請問該如何修改。

<aaa>
    <AAA>
        <bbb>
             <ccc>Other text</ccc>
         </bbb>
        <ddd>
            <ccc>Modify text(這里是我想要修改的內(nèi)容)</ccc>
        </ddd>
    </AAA>
    <BBB>
        <bbb>
             <ccc>Other text</ccc>
         </bbb>
        <ddd>
            <ccc>Other text</ccc>
        </ddd>
    <BBB>
</aaa>

論壇徽章:
28
15-16賽季CBA聯(lián)賽之八一
日期:2016-02-22 19:10:4215-16賽季CBA聯(lián)賽之深圳
日期:2016-12-01 10:34:0415-16賽季CBA聯(lián)賽之新疆
日期:2016-12-07 10:24:2915-16賽季CBA聯(lián)賽之同曦
日期:2016-12-15 12:06:43CU十四周年紀(jì)念徽章
日期:2016-12-18 13:03:4415-16賽季CBA聯(lián)賽之吉林
日期:2017-01-03 15:52:2515-16賽季CBA聯(lián)賽之遼寧
日期:2017-01-04 14:58:2415-16賽季CBA聯(lián)賽之遼寧
日期:2017-01-15 09:42:512016科比退役紀(jì)念章
日期:2017-02-06 17:21:50黑曼巴
日期:2017-02-10 15:46:1215-16賽季CBA聯(lián)賽之上海
日期:2017-03-18 10:14:5415-16賽季CBA聯(lián)賽之青島
日期:2017-03-18 22:00:44
2 [報(bào)告]
發(fā)表于 2016-08-16 14:12 |只看該作者
本帖最后由 moperyblue 于 2016-08-16 15:13 編輯
  1. sed -r '/<AAA>/{:a;/<\/AAA>/!{N;ba};s/(<ddd>.*<ccc>)[^<]*/\1ok/}' file
復(fù)制代碼

論壇徽章:
145
技術(shù)圖書徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11獅子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龍
日期:2014-01-08 15:26:12技術(shù)圖書徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
3 [報(bào)告]
發(fā)表于 2016-08-16 14:59 |只看該作者
回復(fù) 1# 哥哥_88

$ awk 'BEGIN{RS="<";FS=OFS=">"}function get_tag(){s=$1;d=sub("^/","",s)?-1:1;if(NF>1){c+=d;if(d>0)t[c]=s}s="";for(n=1;n<=c;++n)s=s"/"t[n];return(s)}{tag=get_tag();if(tag=="/aaa/AAA/ddd/ccc")$2="xxxx";printf $0RT}' xml
<aaa>
    <AAA>
        <bbb>
             <ccc>Other text</ccc>
         </bbb>
        <ddd>
            <ccc>xxxx</ccc>
        </ddd>
    </AAA>
    <BBB>
        <bbb>
             <ccc>Other text</ccc>
         </bbb>
        <ddd>
            <ccc>Other text</ccc>
        </ddd>
    <BBB>
</aaa>

   

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2016-08-16 16:11 |只看該作者
回復(fù) 3# jason680


    大神,太厲害了,上一個(gè)問題也是你用perl腳本幫忙搞定,對你除了崇拜就只剩景仰了。

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2016-08-16 16:33 |只看該作者
回復(fù) 3# jason680


    awk還是有這個(gè)問題:
        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <awk: (FILENAME=server.xml FNR=54) fatal: not enough arguments to satisfy format string
        `Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

      <'
                                                                                                                                                                                  ^ ran out for this one

去網(wǎng)上查了,說是因?yàn)?的關(guān)系,論壇之前有人回復(fù)為“awk '{printf "%s", something}'”,可是不知道在這個(gè)語句中怎么修改。

論壇徽章:
145
技術(shù)圖書徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11獅子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龍
日期:2014-01-08 15:26:12技術(shù)圖書徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
6 [報(bào)告]
發(fā)表于 2016-08-16 22:56 |只看該作者
本帖最后由 jason680 于 2016-08-16 22:57 編輯

回復(fù) 5# 哥哥_88

add some note in xml file

$ awk 'BEGIN{RS="<";FS=OFS=">"}function get_tag(){if($1~/^!--/)return(r);s=$1;d=sub("^/","",s)?-1:1;if(NF>1){c+=d;if(d>0)t[c]=s}r="";for(n=1;n<=c;++n)r=r"/"t[n];return(r)}{tag=get_tag();if(tag=="/aaa/AAA/ddd/ccc")$2="xxxx";printf "%s",$0RT}' xml
<aaa>
    <AAA>
    <!-- note1
       note2 ... -->

        <bbb>
             <ccc>Other text</ccc>
         </bbb>
        <ddd>
            <ccc>xxxx</ccc>
        </ddd>
    </AAA>
    <BBB>
        <bbb>
             <ccc>Other text</ccc>
         </bbb>
        <ddd>
            <ccc>Other text</ccc>
        </ddd>
    <BBB>
</aaa>

   

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2016-08-17 09:37 |只看該作者
回復(fù) 6# jason680


    感謝,%的問題已經(jīng)解決,但是我的如下文件沒修改成功,不知道是什么原因:

awk 'BEGIN{RS="<"}function get_tag(){s=$1;d=sub("^/","",s)?-1:1;if(NF>1){c+=d;if(d>0)t[c]=s}s="";for(n=1;n<=c;++n)s=s"/"t[n];return(s)}{tag=get_tag();if(tag=="/config/interface/system1/reqsystem/address")$2="xxxx";printf "%s",$0RT}' test.xml > tmp

<?xml version="1.0" encoding="utf-8"?>
<config>
        <interface>
                <!-- Security Center -->
                <system1>
                        <reqsystem>
                                <address>127.0.0.1</address>
                                <account>test</account>
                                <password>test</password>

                        </reqsystem>
                        <JK0001>
                                <api>myApiName1
                                </api>
                                <method>POST</method>
                                <desc>Test Interface</desc>
                        </JK0001>
                        <JK0002>
                                <api>myApiName2</api>
                                <method>POST</method>
                                <desc>Test Interface</desc>
                        </JK0002>
                </system1>

                <system2>
                        <reqsystem>
                                <address>127.0.0.1</address>
                                <account>test</account>
                                <password>test</password>

                        </reqsystem>
                        <JK0001>
                                <api>myApiName1
                                </api>
                                <method>POST</method>
                                <desc>Test Interface</desc>
                        </JK0001>
                        <JK0002>
                                <api>myApiName2</api>
                                <method>POST</method>
                                <desc>Test Interface</desc>
                        </JK0002>
                </system2>
        </interface>

        <sysServiceParams>
                <info>
                        <count>10</count>
                </info>
                <setting>
                        <about>About</about>
                </setting>
        </sysServiceParams>

</config>

論壇徽章:
145
技術(shù)圖書徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11獅子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龍
日期:2014-01-08 15:26:12技術(shù)圖書徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
8 [報(bào)告]
發(fā)表于 2016-08-17 12:39 |只看該作者
回復(fù) 7# 哥哥_88

$ awk 'BEGIN{RS="<";FS=OFS=">"}function get_tag(){if($1~/^[^\/a-zA-Z0-9]/)return("");s=$1;d=sub("^/","",s)?-1:1;if(NF>1){c+=d;if(d>0)t[c]=s}r="";for(n=1;n<=c;++n)r=r"/"t[n];return(r)}{tag=get_tag();if(tag=="/config/interface/system1/reqsystem/address")$2="192.168.1.1";printf "%s",$0RT}' test.xml > tmp.xml


$ diff test.xml tmp.xml
7c7
<                                 <address>127.0.0.1</address>
---
>                                 <address>192.168.1.1</address>

   

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2016-08-17 14:29 |只看該作者
回復(fù) 8# jason680


    看到改動點(diǎn)了,雖然看不大懂,但是問題完美解決了,非常感謝。!
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP