我的任务是编写一个脚本,在大约1000台Mac电脑上更改XML文件中的特定值。显然,这需要脚本化,最好只使用Mac上已经可用的工具(即不需要额外的安装)。这里的最终目标是在与active directory相关的特定文件中禁用IPv6。例如:
旧文件:
<IPv4>
<script>Automatic</script>
</IPv4>
<IPv6>
<script>Automatic</script>
</IPv6>
新文件:
<IPv4>
<script>Automatic</script>
</IPv4>
<IPv6>
<script>__INACTIVE__</script>
</IPv6>
我已经尝试过搜索,并且有几个sed脚本可以让我走到一半,但是没有足够接近的地方。我不能安装任何XML解析程序,因为这需要在所有Mac上尽可能自动化。
编辑:次要问题-
使用awk或sed,我是否可以计算它进行更改的次数,即计算它发现的实例数?
发布于 2011-12-15 12:12:57
使用 awk
**:**的
awk '/<IPv6>/,/<\/IPv6>/ {sub(/Automatic/,"__INACTIVE__")}1' xml_file > new_xml_file
使用 sed
**:行内编辑的**
sed -i '/<IPv6>/,/<\/IPv6>/s/Automatic/__INACTIVE__/' xml_file
要在混合中添加计数的:
awk '
/<IPv6>/,/<\/IPv6>/ {sub(/Automatic/,"__INACTIVE__"); if ($0~/__/) count++}1
END{ print FILENAME, count >>"countfile"}' xml_file> new_xml_file
END
语句将捕获您在其上运行脚本的Filename
和一个名为countfile
的文件中的更改的counts
,并将appending
保存到该文件以用于统计分析。
https://stackoverflow.com/questions/8514985
复制相似问题