Захват только текста / подстроки между 4-м и 7-м символами подчеркивания во всех строках файла - PullRequest
2 голосов
/ 20 июня 2020

У меня есть list.txt, который содержит следующие строки.

Primer_Adapter_clean_KL01_BOLD1_100_KL01_BOLD1_100_N701_S507_L001_merged.fasta
Primer_Adapt_clean_KL01_BOLD1_500_KL01_BOLD1_500_N704_S507_L001_merged.fasta
Primer_Adapt_clean_LD03_BOLD2_Sessile_LD03_BOLD2_Sessile_N710_S506_L001_merged.fasta

Теперь я хотел бы взять только подстроку между 4-м и 7-м подчеркиванием, чтобы она выглядела, как показано ниже

BOLD1_100_KL01
BOLD1_500_KL01
BOLD2_Sessile_LD03

Я пробовал следующую команду awk, но, думаю, я ошибся. Любая помощь здесь будет оценена. Если это можно сделать с помощью sed, меня тоже заинтересует это решение.

awk -v FPAT="[^__]*" '$4=$7' list.txt

Ответы [ 2 ]

2 голосов
/ 20 июня 2020

Мне кажется, что awk - это перебор. Вы можете просто использовать cut, чтобы выбрать только те поля, которые вам нужны:

$ cut -d_ -f5-7 list.txt
BOLD1_100_KL01
BOLD1_500_KL01
BOLD2_Sessile_LD03
0 голосов
/ 20 июня 2020
awk 'BEGIN{FS=OFS="_"} {print $5,$6,$7}' file

Вывод:

BOLD1_100_KL01
BOLD1_500_KL01
BOLD2_Sessile_LD03
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...