这是我的xml
<Deployer exitOnError="true" sourceType="Repository">
<Projects projectPrefix="">
<SubProject description="" name="Ship" overwrite="false" type="Repository">
</SubProject>
</Projects>
</Deployer>
我希望o使用shell脚本将name =“Ship”更改为name =“Ship”+ currentdatetime。任何帮助表示赞赏。
我想最好使用sed或awk(我不想要xmlstarlet因为我的Linux机器上没有xml工具箱)
请在下面找到我试过的内容。
sed "/DeployerSpec>/,<Project description='' name='bstar' overwrite='false' type='Repository'>" file
sed -i 's:<DeployerSpec exitOnError="true" sourceType="Repository"><Projects projectPrefix=""><Project description="" name="bstar" overwrite="false" type="Repository"></Project></Projects></DeployerSpec>:<DeployerSpec exitOnError="true" sourceType="Repository"><Projects projectPrefix=""><Project description="" name="bstar"+$(date+%x_%r) overwrite="false" type="Repository"></Project></Projects></DeployerSpec>:' sample.xml
sed -i.bak "s/<Project description='' name='bstar' overwrite='false' type='Repository'>/<Project description='' name='bstar'+$(date +%x_%r) overwrite='false' type='Repository'>/g" a.xml
答案 0 :(得分:2)
与经理和客户一起努力是一个永恒的过程...我理解。
对于你这个简单的案例,你可以使用 sed 方法:
sed -i 's/name="Ship"/name="'"$(date)"'"/g' your.xml
xml文件内容(您的语言环境中的日期时间不同):
<Deployer exitOnError="true" sourceType="Repository">
<Projects projectPrefix="">
<SubProject description="" name="Mon 22 May 15:41:23 EEST 2017" overwrite="false" type="Repository">
</SubProject>
</Projects>
</Deployer>
-i
- 就地修改文件
$(date)
- 获取当前日期时间值
无论如何,如果有更复杂和复杂的任务,例如&#34;如果它是父元素name
的子元素,则更改属性ServiceProject
值,并且该父元素也应具有属性city
大于balance
&#34;的子元素1000
。在这种情况下,Unix shell工具将失败,您的经理需要重新考虑他们对XML解析器的态度
答案 1 :(得分:1)
尝试:
DATE=$(date)
sed 's/Ship/& '"${DATE}"'/g' Input_file
创建一个名为DATE且具有当前日期的变量,然后使用sed替换字符串Ship with Ship和当前日期。
答案 2 :(得分:0)
sudo sed -i '/<Project\s\description=""/s/name="[^"]*/name="'"$(date)"'"/g' Demo.xml