【发布时间】:2012-07-01 06:53:08
【问题描述】:
我遇到以下问题 - 我想遍历某个目录下的所有 xml 文件,并为我找到的所有 id-s 加上某个前缀。为此,我编写了以下脚本:
#!/bin/bash
find . -iregex .+?\.xml -print -exec awk '{print gensub(/(.*?)=\"(@(\+|)id)\/(.+)\"/, "\\1=\"\\2/prefix_\\4\"", "g", $1);}' {} > {} \;
但是重定向部分 - > {} 不起作用。该脚本将运行良好并按预期在标准输出上打印所有内容,但似乎无法将输出重定向到 awk 读取的同一文件。知道如何规避这个问题吗?谢谢!
【问题讨论】:
-
澄清一下,您希望在同时写入文件的同时读取文件?
-
没有。我期待
awk print ... {}输出一些将被重定向到 awk 读取的文件的内容。不过这似乎是不可能的。
标签: regex shell replace awk find