У меня есть ответ, /var/mail должен быть ссылкой, а не каталогом.
lrwxrwxrwx 1 root root 10 Jan 5 20:17 /var/mail -> spool/mail
sed 's/_[^_]*$//' < file
Замените _
, за которым следует 0 или более(*
)символов, отличных от _
([^_]
), за которыми следует конец строки $
, на ничего .
Вот еще один способ:
sed -nr 's/(.*)_.*/\1/p' file
Жадно сопоставить (самую длинную строку, которая соответствует )всем символам до _
(, которая будет называться \1 ), за которой следует остальная часть строки, и заменить ее группой \1.
Без -аргумента r назад -ссылки (типа \1 )не будут работать.
Опция -n отключает обычную печать каждой вещи в пространстве шаблонов после выполнения всех команд sed.
cat file
AY498934.1_cds_AAS79865.1_1_1
AY498934.1_cds_AAS79865.1_1_2
AY498934.1_cds_AAS79865.1_1_3
sed -nr 's/(.*)_.*/\1/p' file
AY498934.1_cds_AAS79865.1_1
AY498934.1_cds_AAS79865.1_1
AY498934.1_cds_AAS79865.1_1