У меня есть файл с десятками тысяч строк, разделенных табуляцией, например:
cluster11586 TRINITY_DN135758_c4_g1_i1 5'-adenylylsulfate reductase-like 4 9.10921
cluster41208 TRINITY_DN130890_c2_g1_i1 Anthranilate phosphoribosyltransferase, chloroplastic 18.5398
cluster26862 TRINITY_DN132510_c1_g1_i2 ATP synthase subunit alpha, mitochondrial 4.82626
cluster13001 TRINITY_DN130890_c4_g1_i3 Phosphopantetheine adenylyltransferase 2.58108
Я хотел бы использовать grep / awk / sed для создания файла с текстом после первых двух столбцови перед последним десятичным числом, с удаленными табуляциями и заменой пробелов на подчеркивания:
5'-adenylylsulfate_reductase-like_4
Anthranilate_phosphoribosyltransferase,_chloroplastic
ATP_synthase_subunit_alpha,_mitochondrial
Phosphopantetheine_adenylyltransferase
Я думал о том, чтобы извлечь все до последнего десятичного числа, которое я могу сопоставить с [0-9]+\.[0-9]+$
, а затемпередать результат в нечто похожее на awk '{$1=$2=""; print $0}'
, чтобы удалить первые два столбца (и, надеюсь, и следующую вкладку), а затем отправить его на sed -e 's/ /_/g'
Но как можно извлечь текст перед последним десятичным числом в каждой строке, безполучение самого десятичного числа, ни предшествующих пробелов?И, похоже, awk покидает вкладку после удаления первых двух столбцов.Могу ли я сделать все это без вывода промежуточных файлов?