bash - 循环目录和文件 bash 脚本 - awk 不写入文件

标签 bash awk find

我想遍历一些包含 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"

关于bash - 循环目录和文件 bash 脚本 - awk 不写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12317865/

相关文章:

linux - 具有多个变量的 Bash For 循环

bash - 从文本文件中删除特殊字符(<200c> <200d>

bash - 将图像目录转换为单个 PDF

excel - VBA - 从头开始​​查找字符串

jquery - 使用 jQuery 查找页面上的所有 URL

linux - 为什么这个 inotifywait shellscript 使用两个 PID?

awk - 计算每列中的唯一出现次数

shell - 如何在awk中使用公共(public)键合并两个文件?

bash - awk:用另一个文件过滤一个文件的更优雅的方法

Linux 查找命令隐藏基目录