sed and awk process xml file in multi line

sed -e '1!G;h;$!d' outputr.xml > output.xml    //reverse the each line in file

awk -v casename="keypad_test" -v dis="hhhh" -v tes="hhhh" -f replace.awk output.xml > outputr.xml  


replace.awk:

BEGIN {
  f=0
  g=0
}


$0 ~ casename {
    f=1
} 


f && /<item[ ]*Displayable/ {
    r="    <item Displayable=\"" dis "\" Testable=\"" tes "\" Manual=\"true\">"
    g=1
    print r 
}


/<TestItem/ {
    g=f=0
}


/<\/item>/ {
    g=f=0
}


!g {
    print $0
}


output.xml :

<?xml version="1.0" encoding="utf-8" ?>
<TestItem  Port="1" TMode="factory">

     <item Displayable="true" Testable="true" Manual="true">

    <Title>keypad</Title>
    <CaseName>keypad_test</CaseName>
    <Description>power,volume+,volume-,menu,home,back/Description>
    <ExpectingResult>OK</ExpectingResult>
 </item>
    <item  Displayable="true" Testable="true">
       <Title> WIFI</Title>
       <CaseName>WIFI</CaseName>
      <Atc>
         <Action>at$test,wifi,autocheck</Action>
         <ExpectingResult>OK</ExpectingResult>
      </Atc>
    </item>
    <item  Displayable="true" Testable="true">
        <Title>GPS</Title>
        <CaseName>gps</CaseName>
        <Atc>
          <Action>at$test,gps,-c1,-t180</Action>
          <ExpectingResult>OK</ExpectingResult>
         </Atc>
   </item>
   <item   Displayable="true" Testable="true">
        <Title> USB</Title>
        <Atc>
          <Action>at$dread,usb,isconfiged</Action>
          <ExpectingResult>OK</ExpectingResult>
        </Atc>
        <CaseName>usb_test</CaseName>
    </item>
</TestItem>

#su xinmin 2014.2.28


# according to IsActive attribute in dev_cfg.xml to change the Displayable and Testable attribute in augu_factory_test.xml


#check if file exist or not


if [ ! -f dev_cfg.xml ]; then
    echo " file dev_cfg.xml is not exist !"
    return
fi 


if [ ! -f augu_factory_test.xml ]; then
    echo " file augu_factory_test.xml is not exist !"
    return 
fi


if [ ! -f replace.awk ]; then
    echo " file replace.awk is not exist !"
    return 
fi


#reverse output.xml to outputr.xml
sed -e '1!G;h;$!d' augu_factory_test.xml > outputr.xml


#pick out IsActive attribute is YES in dev_cfg.xml 
awk '/[ \t]*<DEVICE/{print $2 $6 }' dev_cfg.xml |  awk -F/ '{print $1}' | awk -F= '{print $2 $3}' | awk -F\" '{print $2 " " $4}' | awk '$2=="YES" {print $1}' > true.txt


#change the Displayable and Testable attribute in augu_factory_test.xml to true
for tt in `cat true.txt`;do 
    awk -v casename=$tt -v dis="true" -v tes="true" -f replace.awk outputr.xml > outputr2.xml
    mv outputr2.xml outputr.xml
done


#pick out IsActive attribute is NO in dev_cfg.xml 
awk '/[ \t]*<DEVICE/{print $2 $6 }' dev_cfg.xml |  awk -F/ '{print $1}' | awk -F= '{print $2 $3}' | awk -F\" '{print $2 " " $4}' | awk '$2=="NO" {print $1}' > false.txt


#change the Displayable and Testable attribute in augu_factory_test.xml to false
for tt in `cat false.txt`;do
    awk -v casename=$tt -v dis="false" -v tes="false" -f replace.awk outputr.xml > outputr2.xml
    mv outputr2.xml outputr.xml
done


sed -e '1!G;h;$!d' outputr.xml > augu_factory_test.xml 


rm outputr.xml true.txt false.txt




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"sed and awk 101 hacks" 是一本关于使用 sedawk 命令的技巧集合。 sed 是一种流编辑器,用于在文本中进行查找和替换的操作。它使用简单的命令来处理文本,并且非常强大和灵活。这本书提供了许多关于使用 sed 命令的技巧和技巧。一些常见的应用包括:全局替换、删除、插入和追加文本、使用正则表达式进行匹配等。通过阅读这本书,你将了解如何更有效地使用 sed 命令来处理文本文件,提高你的工作效率。 awk 是一种处理文本数据的编程语言,它可以用于查找、提取和转换数据。awk 命令的主要功能是逐行扫描文件并执行基于规则的操作。在这本书中,你将学习到如何使用 awk 命令来处理文本数据,并解决各种实际问题。一些常见的应用包括:数据分析、报告生成、格式化输出、数据过滤和转换等。通过学习 awk 的技巧和技巧,你将成为一个更高效的文本数据处理者。 这本书主要面向那些已经熟悉 sedawk 命令,并且希望提高他们的技能的人群。它提供了许多实际的示例和用法,帮助读者更好地掌握 sedawk 的使用。内容涵盖了许多不同的主题,包括入门指南、高级用法、实用技巧和示例脚本。无论你是初学者还是有经验的用户,这本书都将是一个有用的参考工具。 总的来说,"sed and awk 101 hacks" 是一本关于使用 sedawk 命令的实用指南和技巧合集。通过学习和实践这些技巧,你将能够更好地处理和处理文本数据,提高你的工作效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值