У меня есть текстовый файл, как показано ниже.
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
В первом столбце я бы хотел получить часть после >. Как я могу это сделать?
cut -d '>' -f2 file.txt , awk -F'>' '{print $2}' file.txtМы рекомендуем участникам опроса показать, что они уже пытались решить проблему самостоятельно.





Я бы использовал команду вырезания, предложенную @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
Если это ответило на ваш вопрос, примите его, нажав на галочку рядом с ним.
sed 's/^.*>//'мог бы это сделать - я больше не отвечаю на вопросы, связанные с регулярными выражениями, поэтому просто комментирую, чтобы помочь.