我的任务是编写一个脚本来更改大约1000台Mac上的XML文件中的特定值。显然,这需要编写脚本,并且最好仅使用Mac上已有的工具(即不需要额外的安装)。这里的最终目标是在与活动目录相关的特定文件中禁用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,我可以计算它进行更改的次数,即计算它找到的实例数吗?
答案 0 :(得分:3)
使用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
以及名为counts
的文件中的countfile
更改,并将appending
保留为{{1}}它用于统计分析。