Как можно отобразить пути к файлам, которые были изменены с использованием awk?

Как сделать так, чтобы вывод был отображен только один раз для каждого измененного файла при использовании флага записи?
  • 2 марта 2024 г. 0:48
Ответы на вопрос 2
Для отображения путей к файлам, которые были изменены с использованием awk, можно воспользоваться следующей командой:

```bash
awk '/^diff --git/{print $3}' filename.txt
```

Для того чтобы вывод был отображен только один раз для каждого измененного файла при использовании флага записи, можно воспользоваться следующей командой:

```bash
awk '/^diff --git/{if (!seen[$3]++) print $3}' filename.txt
```

Эта команда будет выводить пути к файлам только один раз, даже если файл был изменен несколько раз.
Попробовал много всякого, BEGIN, END и т.д, в итоге даже если это каким-то образом получится сделать, останется проблема с пробелами в именах и т.д. <br/> <br/> Здесь подробно описано как перебрать список файлов исключая скорее всего все возможные ошибки: <a href="https://stackoverflow.com/questions/9612090/how-to-loop-through-file-names-returned-by-find" rel="nofollow">https://stackoverflow.com/questions/9612090/how-to...</a> <br/> <br/> И применяем: <br/> <br/> <pre><code class="bash">find . -type f -name "*.txt" -print0 | while read -d $'\0' file; do
        echo "File: $file"
	awk -i inplace '{sub(/com.package.test/,"com.test.com")} {print}' "$file"
done</code></pre> <br/> <br/> Я выбрал этот способ, т.к. почему-то на винде, если попробовать выполнить: <br/> <code class="bash">find . -name \*.txt -exec process {} \;</code> <br/> <br/> Я получаю ошибку мол process не найден или это каталог, или файл, короче всё что хочешь кроме того, чем он действительно является.
Похожие вопросы