У меня возникла следующая проблема: я хочу пройти все файлы xml в определенном каталоге и префикс всех id
-s, которые я нахожу с определенным префиксом. Я написал следующий скрипт, чтобы сделать это:Как изменить содержимое файла с помощью find и awk?
#!/bin/bash
find . -iregex .+?\.xml -print -exec awk '{print gensub(/(.*?)=\"(@(\+|)id)\/(.+)\"/, "\\1=\"\\2/prefix_\\4\"", "g", $1);}' {} > {} \;
Однако Перенаправление часть - > {}
не будет работать. Скрипт будет работать нормально и напечатать все, как ожидалось, на stdout, но кажется, что вывод не может быть перенаправлен на тот же файл, который awk читает. Любая идея, как обойти это? Благодаря!
Чтобы уточнить, хотите ли вы читать из файла при записи в файл в то же время *? – Levon
Нет. Я ожидаю 'awk print ... {}' для вывода чего-то, что будет перенаправлено на файл, который awk читает. Кажется, это невозможно. – asenovm