这是我下面的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