У меня есть несколько файлов с разделителями табуляции, для которых пользователь сценария будет выбирать один на основе определенного порога. Все файлы имеют различное количество столбцов (от 1 до n в зависимости от ранее выбранного порога). Столбцы файлов не имеют заголовков, однако для следующей программы для выбранного файла потребуются заголовки. Столбцы должны быть названы от Q1 до Qn для этого следующего шага. Поскольку пользователь может использовать файл с 1 или 10 или n столбцами, число столбцов с именами от Q1 до Qn будет меняться каждый раз. У меня проблемы с тем, чтобы заставить эту работу работать должным образом. Какие-либо предложения?

Чего я хочу достичь:

https://i.stack.imgur.com/dmJMt.png

1 ответ1

0

Итак, это то, что я придумал. Немного грязно, и я думаю, что, возможно, есть более быстрый путь, но это сработало.

for i in $(seq 1 $maxPops); do echo $i; done > output1.txt #make a temp file with numbers 1 to max populations maxPops
awk '{for (i=1;i<=NF;i++) {print "Q"$i;}}' output1.txt > outpu2.txt #Add Q to the beginning of each row name
cut -f1 output2.txt | paste -s > output3.txt #transpose the row names
awk -v OFS="\t" '$1=$1' inputPopFile.txt > chosenPop.txt #change single spaces to tab delimited spaces
cat output3.txt chosenPop.txt > renamedColumns.txt #add formatted column names to desired file chosenPop.txt
rm $fastStructure/temp1.txt $fastStructure/numPops.txt #remove unwanted files

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .