awk '/^>/ { printf "%s ",$0; next; } { print; }' file1 |
sort -n |
awk '{ print $1; print $2; }'
Вы можете использовать простые команды awk
, как показано ниже. Ниже просто реконструируется вся строка {..}1
, добавляя к текущей строке $0
значение, указывающее количество вхождений слова в файл.
awk '{ $0 = $0 "" ++unique[$0] }1' file
Часть unique[$0]
создает хеш-карту -со значением $0
в качестве ключа, т.е. unique['H'], unique['O']
и т. д. Приращение к ней до -будет увеличивать значение в массиве как unique['H']=1
, unique['H']=2
и так далее.Мы также можем просто добавить счетчик в конец каждой строки вместо того, чтобы явно -создавать каждую строку
awk '{ print($0 "" ++unique[$0]) }' file
Эквивалентная версия Perl с той же логикой
perl -lpe '{ $_.= ++$unique{$_} }' file
Последнее может быть легко адаптировано к случаям, когда каждый символ не находится в отдельной строке, например:
$ echo ABBC | perl -lpe 's/./$&. ++$unique{$&}/ge'
A1B1B2C1