Как найти файлы для редактирования и экспорта в тот же каталог, что и другой файл, с помощью Awk и Find в цикле for - PullRequest
1 голос
/ 18 марта 2019

Задать глупый вопрос, однако я, похоже, не могу найти ответ с помощью stackoverflow или других результатов поиска в Google.Либо этот вопрос слишком конкретен, либо слишком туп.Я думаю, что это более поздний ...

Я использую awk для фильтрации файлов, которые находятся в другом подкаталоге, и я хочу выводить результаты в том же подкаталоге, где расположен файл.

Я играл с командой find и смог awk файлы во всех подкаталогах, соответствующих шаблону.

I find файлы заканчивались на .tsv, а затем в 8-м столбце (значениячто под -1), а затем я вывожу файл, использую базу имени файла и добавляю .txt

for file in $(find $DIR2 -type f -name '*.tsv'); do
awk -F$'\t' '$8 < -1' $(find $DIR2 -type f -name '*.tsv') > $DIR2/$(basename ${file%.*}).txt; done

Однако я немного застрял, не зная, как вывести файлы в исходном подкаталоге.

Если я использую $DIR2/, он экспортируется только в этот конкретный каталог, а без $DIR2/ он экспортируется в текущий рабочий каталог.

1 Ответ

1 голос
/ 18 марта 2019

Попробуйте это (не проверено):

find "$DIR2" -type f -name '*.tsv' -exec \
awk -F'\t' 'FNR==1{close(out); out=FILENAME; sub(/[^.]+$/,"txt",out)} $8 < -1{print > out}' {} +

Если ваш find не поддерживает +, замените его на \;.

...