У меня есть следующая структура каталог с определенными интересующими файлами , на котором я должен выполнять вычисления/арифметические операции, используя awk а>.
$ mkdir DP1/postProcessing/0/ DP2/postProcessing/0/ DP3/postProcessing/0/;
$ touch DP1/postProcessing/0/wallShearStress.dat DP1/postProcessing/0/wallShearStress_0.02.dat DP2/postProcessing/0/wallShearStress_0.dat DP2/postProcessing/0/wallShearStress_0.1.dat DP3/postProcessing/0/wallShearStress_0.05.dat DP3/postProcessing/0/wallShearStress_0.000012.dat
masterDir/;
$ tree masterDir/
masterDir/
├── DP1
│ └── postProcessing
│ └── 0
│ ├── wallShearStress_0.02.dat
│ └── wallShearStress.dat
├── DP2
│ └── postProcessing
│ └── 0
│ ├── wallShearStress_0.1.dat
│ └── wallShearStress_0.dat
└── DP3
└── postProcessing
└── 0
├── wallShearStress_0.000012.dat
├── wallShearStress_0.05.dat
└── wallShearStress.dat
Ожидаемый результат
DP File_processed Ouput_value #Optional header
DP1 wallShearStress_0.02.dat <some result using AWK>
DP2 wallShearStress_0.1.dat <some result using AWK>
DP3 wallShearStress_0.05.dat <some result using AWK>
Моя (очень простая) попытка не удалась, когда скрипт возвращает файлы только три раза для последнего найденного каталога:
$ for i in $(find -type d -name "DP*"); do
> for j in $(find . -type f -name "wallShearStress*" | tail -n 1); do
> echo $j;
> awk 'NR == 3 {print $0}' $j; # this just for example ...
> # but I wanna do something more here, but no issue with that
> # once I can get the proper files into AWK.
> done;
> done;
./DP3/postProcessing/0/wallShearStress_0.05.dat
./DP3/postProcessing/0/wallShearStress_0.05.dat
./DP3/postProcessing/0/wallShearStress_0.05.dat
Определение проблемы: я хочу,
- Сначала найдите в каждом каталоге файл с именем
wallShearStress*.dat
. куда, - интересующий файл должен иметь самый высокий номер в конце. (Чтобы уточнить, в каталоге присутствует несколько файлов
wallShearStress*.dat
, например, дляDP3
следует выбирать толькоDP3\postProcessing\0\wallShearStress_0.05.dat
для обработки, так как он имеет более высокий приоритет, чемDP3\postProcessing\0\wallShearStress.dat
, аналогично следует выбирать толькоDP1\postProcessing\0\wallShearStress_0.02.dat
иDP2\postProcessing\0\wallShearStress_0.1.dat
) - Выполните арифметические операции с awk над выбранным
wallShearStress*.dat
для каждого каталога и выведите вmasterDir
в виде файла.txt
/.csv
следующим образом:
Вопросы
- Что не так с подходом?
- Есть ли лучший подход? (имейте в виду, что проблема заключается в получении правильных файлов, а не в AWK).
Я предпочитаю bash + awk (поскольку мне проще понять, чем если бы кто-то придумал другие языки программирования ). Большое вам спасибо за ваше время!