Здравствуйте, у меня есть файл, например
Файл.txt
>LO_D
AHAHAHAHHAHAH
>LEIO_DS
DHHDHDHDHDH
>LODJ_jdjd
DJDJHDHDHD
>LO_D
AAAAAAA
>LO_D
HHAHAHAHAHAH
Я хотел бы добавить число сразу после каждого элемента >LO_D
Затем я должен получить:
>LO_D_1
AHAHAHAHHAHAH
>LEIO_DS
DHHDHDHDHDH
>LODJ_jdjd
DJDJHDHDHD
>LO_D_2
AAAAAAA
>LO_D_3
HHAHAHAHAHAH
Пожалуйста, добавьте эту попытку, отредактировав свой вопрос
Вы можете использовать это awk
:
awk '/^>LO_D$/ {$0 = $0 "_" (++n)} 1' file
>LO_D_1
AHAHAHAHHAHAH
>LEIO_DS
DHHDHDHDHDH
>LODJ_jdjd
DJDJHDHDHD
>LO_D_2
AAAAAAA
>LO_D_3
HHAHAHAHAHAH
Не могли бы вы попробовать следующее, написанное и протестированное с показанными образцами.
awk '$0= = ">LO_D"{print $0"_"++count;next} 1' Input_file
Объяснение: Добавлено подробное объяснение вышеизложенного.
awk ' ##Starting awk program from here.
$0= = ">LO_D"{ ##Checking condition if line is >LO_D then do following.
print $0"_"++count ##Printing current line _ count variable with inreasing value.
next ##next will skip all further statements from here.
}
1 ##1 will print current line.
' Input_file ##mentioning Input_file name here.
Используйте этот однострочный Perl:
perl -pe 's/^(>LO_D)$/"${1}_" . ++$i/e;' in.fasta
Однострочник Perl использует следующие флаги командной строки:-e
: говорит Perl искать код в строке, а не в файле.-p
: перебирать ввод по одной строке за раз, назначая его $_
по умолчанию. Добавляйте print $_
после каждой итерации цикла.
^(>LO_D)$
: сопоставьте литеральную строку >LO_D
, которая начинается в начале строки (^
) и заканчивается в конце строки ($
). Захватите строку, используя круглые скобки, в переменную захвата $1
."${1}_" . ++$i
: строка замены, состоящая из захваченной переменной $1
, за которой следует символ подчеркивания, за которым следует счетчик. Обратите внимание, что $1
записывается как ${1}
, чтобы не интерпретироваться как несуществующая переменная $1_
. Счетчик увеличивается на 1 перед вычислением выражения, так что счетчик равен 1, 2, 3 и т. д. при последующих совпадениях.
s/PATTERN/REPLACEMENT/e
: флаг /e
говорит Perl сначала оценить REPLACEMENT
как выражение, а затем выполнить подстановку.
СМОТРИТЕ ТАКЖЕ:
perldoc perlrun: как запустить интерпретатор Perl: переключатели командной строки
perldoc perlrequick: быстрое начало работы с регулярными выражениями Perl
Я знаю, как использовать sed ex :
sed -i 's@>LO_D@>LO_D_number@'g File.txt
, но я не знаю, как включить числовую часть.