Удалить все после второго подчеркивания

Вы должны хранить вашу информацию в файле, расположение которого соответствует XDG Base Directory Specification.

Поскольку ваш материал - это данные, а не конфигурация, вам следует проверить, существует ли переменная окружения XDG_DATA_HOME и создать файл или поддиректорию, специфичную для утилиты, в которой вы будете хранить файл. Если эта переменная окружения не существует, по умолчанию используется ~/.local/share:

base_dir = os.environ.get('XDG_DATA_HOME', 
                  os.path.join(os.environ['HOME'], '.local', 'share'))
util_data_dir = os.path.join(base_dir, util_name)

3
12.06.2017, 21:45
4 ответа

Есть также короткая рука с использованием awk:

awk -F_ '{print $1 (NF>1? FS $2 : "")}' yourfile
2
27.01.2020, 21:12

для ленивых из нас:

cut -d_ -f1,2 input

дает нам:

bash-[514]$ cat input
>gi_12_pork_cat   
ACGT
>gi_34_pink_blue    
CGTA

bash-[515]$ cut -d_ -f1,2 input
>gi_12
ACGT    
>gi_34
CGTA
3
27.01.2020, 21:12
$ awk -F_ 'BEGIN {OFS="_"} /^>gi/ {print $1,$2} ! /^>gi/ {print}' input
>gi_12
ACGT
>gi_34
CGTA
1
27.01.2020, 21:12
sed -ne '/^>gi_/s/_/\n/2;P' yourfile

Объяснение

  • Только для строк, начинающихся со строки >gi_ мы должны попытаться применить подпрограмму _ - --> \n. Затем мы печатаем пространство шаблонов, используя команду P, которая печатает до первой новой строки, если находит одну или всю ее.
1
27.01.2020, 21:12

Теги

Похожие вопросы