如何在 shell 脚本中使用新值(添加日期时间)更新 XML 文件属性



这是我下面的xml。

<Deployer exitOnError="true" sourceType="Repository">
<Projects projectPrefix="">
<SubProject description="" name="Ship" overwrite="false" type="Repository">
</SubProject>
</Projects>
</Deployer>

我想使用 shell 脚本将名称="运输"更改为名称="运输"+当前日期时间。任何帮助表示赞赏。

我想最好使用 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

与经理和客户斗争是一个永恒的过程......我理解。
对于简单的情况,您可以使用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) - 获取当前日期时间值


无论如何,如果有更复杂和更复杂的任务,例如"更改属性name值,如果它是父元素ServiceProject的子元素,并且该父元素还应该有一个属性balance大于 1000 的子元素city"。在这种情况下,Unix shell 工具会失败,您的经理需要重新考虑他们对 XML 解析器的态度

请尝试:

DATE=$(date)
sed 's/Ship/& '"${DATE}"'/g' Input_file

创建一个名为 DATE 的变量,该变量具有当前日期,然后简单地使用 sed 替换字符串 Ship with Ship 和 Current Date。

sudo sed -i '/<Projectsdescription=""/s/name="[^"]*/name="'"$(date)"'"/g' Demo.xml

最新更新