我想遍历一些包含xml文件的目录。我想对每个文件应用一个awk命令,并将输出再次写入该文件。不过,写入的文件是空的。为什么?我使用以下脚本:
#!/bin/bash
for f in `find /myDir/ -iname "*.xml"`
do
awk '/<string name="my/ attribute" optional="false">/,/</string>/ {sub(/<value>(.*)</value>/,"<value>none</value>")}1' $f >$f
done
您必须使用一个临时文件:
awk ... "$f" > "$f".tmp; mv "$f".tmp "$f"
问题不在awk
中,问题在重定向中。无法写入正在读取的文件。