Как вывести результаты инструкций awk в другой каталог, чем тот, в котором в данный момент работали - PullRequest
0 голосов
/ 12 февраля 2019

Справочная информация: У меня есть 48 файлов, которые я пытаюсь разделить по значению в определенном столбце с помощью awk.Пример моих данных:

chr pos ref alt reffrq  info    rs  pval    effalt  gene
chr1    13417   C   CGAGA   0.0915493   1   rs777038595 0.978587    0.0051328   DDX11L1
chr1    17559   G   C   0.00662252  1   rs866150608 0.138321    0.985859    DDX11L1
chr1    54421   A   G   0.0448276   1   rs146477069 0.534267    0.177514    BLAH
chr1    54490   G   A   0.191489    1   rs141149254 0.830873    0.0307553   BLAH

. В этом файле столбец gene состоит из тысяч различных имен, и я хочу разбить эти огромные файлы в файл для каждого имени гена (так чтоЯ заканчиваю здесь с DDX11L1.txt и BLAH.txt).

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

awk '{print >> $10".txt"}' tissue1.txt

Вопрос: Однако теперь я хочу выполнить итерацию этого автоматически для каждого из 48 файлов и разделить каждый из файлов разделения на новый каталог для каждого из них.больших файлов.

Это то, что я до сих пор придумал (где tissue определено ранее из таблицы и также является префиксом для каждого из больших файлов):

mkdir /inputs/"$tissue"
workingDir=/inputs/"$tissue"

awk -v tissue="$tissue" -v workingDir="$workingDir" '{print >> "$workingDir"/$10".txt"}' "$tissue"_input.txt

Проблема в том, что здесь выводятся файлы в тот же каталог, в котором я сейчас нахожусь, а затем имена файлов $workingDirGENENAME.txt, что, очевидно, не то, что я хочу.Поэтому, по сути, я просто не понимаю, куда мне нужно поместить переменные для выходного каталога.

1 Ответ

0 голосов
/ 12 февраля 2019

Оказывается, это было просто неправильное понимание синтаксиса, используемого Awk.

Кажется, работает следующее:

awk -v tissue="$tissue" -v workingDir="$workingDir" '{print >> workingDir "/" $10".txt"}' "$tissue"_input.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...