Как можно отобразить пути к файлам, которые были изменены с использованием 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 и т.д, в итоге даже если это каким-то образом получится сделать, останется проблема с пробелами в именах и т.д. 

Здесь подробно описано как перебрать список файлов исключая скорее всего все возможные ошибки: https://stackoverflow.com/questions/9612090/how-to...

И применяем:

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


Я выбрал этот способ, т.к. почему-то на винде, если попробовать выполнить:
find . -name \*.txt -exec process {} \;

Я получаю ошибку мол process не найден или это каталог, или файл, короче всё что хочешь кроме того, чем он действительно является.
Похожие вопросы