Извлечь некоторые части строки в первом столбце

У меня есть текстовый файл, как показано ниже.

000005845.2_ASM584v2_genomic.fna:>NC_000913.3   562
000006605.1_ASM660v1_genomic.fna:>NC_007164.1   3827
000006605.1_ASM660v1_genomic.fna:>NC_003080.1   38291
000006685.1_ASM668v1_genomic.fna:>NC_002620.2   83560

Мой желаемый результат

NC_000913.3 562
NC_007164.1 3827
NC_003080.1 38291
NC_002620.2 83560

В первом столбце я бы хотел получить часть после >. Как я могу это сделать?

🤔 А знаете ли вы, что...
Bash позволяет работать с переменными окружения для настройки поведения скриптов.


50
1

Ответ:

Решено

Я бы использовал команду вырезания, предложенную @jetchisel (с небольшой поправкой для гольфа). Используйте > в качестве разделителя полей и распечатайте второе поле:

$ cut -d\> -f2 input.txt
NC_000913.3   562
NC_007164.1   3827
NC_003080.1   38291
NC_002620.2   83560

Вот решения bash, awk и sed по тегам. Решения bash и sed удаляют префикс строки.

$ while read -r; do echo "${REPLY#*>}"; done < input.txt
NC_000913.3   562
NC_007164.1   3827
NC_003080.1   38291
NC_002620.2   83560
$ awk -F \> '{print $2}' input.txt
NC_000913.3   562 
NC_007164.1   3827 
NC_003080.1   38291 
NC_002620.2   83560
$ sed 's/.*>//' input.txt
NC_000913.3   562
NC_007164.1   3827
NC_003080.1   38291
NC_002620.2   83560