Это зависит от того, содержит ли ваш файл данных ' '
(пробелы), показанный в вашем вопросе, и является ли число полей, разделенных '|'
, постоянным для каждой строки. Учитывая, что некоторые из ваших полей имеют пробел после '|'
, а другие нет, похоже, что пробелы являются результатом вставки длинной строки в ваш вопрос.
Если Количество полей равно Константа для каждой строки
Если в каждой строке одинаковое количество полей и разделителей ('|'
), решение awk
тривиально, если 1-е поле всегда начинается с "ENSMUST..."
(или с ">ENSMUST..."
, если '>'
включен в файл) и 9-е поле является вашей последовательностью генов, тогда вы можете сделать:
awk -F '|' '{print $1 "|" $9}' infile > newoutfile
Если формат строки не постоянен
Если формат строки не является постоянным в зависимости от количества полей или поля, в котором встречается поле, начинающееся с "ENSMUST..."
, и вашей последовательности генов, вам необходимо проверить наличие и выведите поле, в котором они находятся. Одно из предположений состоит в том, что поле с "ENSMUST..."
находится перед полем с вашей последовательностью гена в строке. Чтобы справиться с этим условием, вы могли бы сделать:
awk -F '|' ' {
for (i=1; i<=NF; i++)
if ($i ~ /^>ENSMUST/) # remove the '>' if not actually in file
printf "%s|", $1
else if (match($i,/[^ACGT]/)==0) {
print $i
break
}
}' infile > newoutfile
Над вами просто l oop над каждым полем, пока не будет найдено поле, начинающееся с "ENSMUST..."
(за ним следует разделитель '|'
) , а затем продолжайте цикл до тех пор, пока не будет найдено поле, состоящее только из символов [ACGT]
(как использовано выше, вы проверяете и отбрасываете любое поле, в котором есть что-то отличное от ACGT
, и выходите из l oop, как только ген последовательность найдена и выведена.
Пример использования / Вывод
В любом случае выше, ваш newoutfile
будет содержать поля:
ENSMUST00000193812.1|AAGGAAAGAGGATAACACTTGAAA.....
или если в файле есть '>'
:
>ENSMUST00000193812.1|AAGGAAAGAGGATAACACTTGAAA.....
Посмотрите и дайте мне знать, если это именно то, что вы хотели, и есть ли у вас дополнительные вопросы.