, иначе shell заменит [1123290]\x[1123291] на [1123292]x[1123293], прежде чем он перейдет в [1123294]echo -e[1123295].
ps. двойной escape также будет работать:
awk solution
$ awk '/>/ { print $1, $2; next } { print }' aa
>YAL003W EFB1
MASTDFSKIETLKQLNASLADKSYIEGTAVSQADVTVFKAFQSAYPEFSRWFNHIASKAD
EFDSFPAASAAAAEEEEDDDVDLFGSDDEEADAEAEKLKAERIAAYNAKKAAKPAKPAAK
SIVTLDVKPWDDETNLEEMVANVKAIEMEGLTWGAHQFIPIGFGIKKLQINCVVEDDKVS
LDDLQQSIEEDEDHVQSTDIAAMQKL*
Вот несколько решений:
GREP
. Паттерн поиск линий, начинающихся с >
, за которым следует 2 последовательности неблагодаря ( [^] + [^] +
) или любые символы (. +
). --O
причина GREP
для печати только сопоставленной части каждой строки:
$ Grep -op '^ (> [^] + [^] + |. +) 'file.fa.fa.
> Yal003w efb1.
MastdfskietlkqlnasladksyegtavsqadvtvfkafqsaypefsrwfnhiaS.
Efdsfpaasaaaaaeeeeedddvdlfgsddeadaeaklkaeriaaynakkakpakpaak.ak.
SivtldvkpwddetnleemvanvkaiemeMegltwgahqfipigfgiklqincvvigfgvs.
Lddlqqsieededhvqstdiaamqkl *
awk
$ awk '{if (/> /) {print $ 1, $ 2} ell {print}}' file.fa
> Yal003w efb1.
MastdfskietlkqlnasladksyegtavsqadvtvfkafqsaypefsrwfnhiaS.
Efdsfpaasaaaaaeeeeedddvdlfgsddeadaeaklkaeriaaynakkakpakpaak.ak.
SivtldvkpwddetnleemvanvkaiemeMegltwgahqfipigfgiklqincvvigfgvs.
Lddlqqsieededhvqstdiaamqkl *
GNU SED
$ SED -R 'S / (> [^] + [^] +). * / \ 1 /' file.fa
> Yal003w efb1.
MastdfskietlkqlnasladksyegtavsqadvtvfkafqsaypefsrwfnhiaS.
Efdsfpaasaaaaaeeeeedddvdlfgsddeadaeaklkaeriaaynakkakpakpaak.ak.
SivtldvkpwddetnleemvanvkaiemeMegltwgahqfipigfgiklqincvvigfgvs.
Lddlqqsieededhvqstdiaamqkl *
Любой SED
$ SED 'S / \ (> [^] * [^] * \). * / \ 1 /' file.fa
> Yal003w efb1.
MastdfskietlkqlnasladksyegtavsqadvtvfkafqsaypefsrwfnhiaS.
Efdsfpaasaaaaaeeeeedddvdlfgsddeadaeaklkaeriaaynakkakpakpaak.ak.
SivtldvkpwddetnleemvanvkaiemeMegltwgahqfipigfgiklqincvvigfgvs.
Lddlqqsieededhvqstdiaamqkl *
Вырезать
$ cut --d '' -f 1,2 file.fa
> Yal003w efb1.
MastdfskietlkqlnasladksyegtavsqadvtvfkafqsaypefsrwfnhiaS.
Efdsfpaasaaaaaeeeeedddvdlfgsddeadaeaklkaeriaaynakkakpakpaak.ak.
SivtldvkpwddetnleemvanvkaiemeMegltwgahqfipigfgiklqincvvigfgvs.
Lddlqqsieededhvqstdiaamqkl *
Perl.
$ Perl -lane 'Print (Hidden) file.fa
> Yal003w efb1.
MastdfskietlkqlnasladksyegtavsqadvtvfkafqsaypefsrwfnhiaS.
Efdsfpaasaaaaaeeeeedddvdlfgsddeadaeaklkaeriaaynakkakpakpaak.ak.
SivtldvkpwddetnleemvanvkaiemeMegltwgahqfipigfgiklqincvvigfgvs.
Lddlqqsieededhvqstdiaamqkl *
Параметры
L
: удалите трейлинные новости от каждой строки ввода и добавьте новую онлайн на каждый вызов принтера. A
: разделить каждую входную линию на пробере, в массив @F
. N
: Прочитайте строку входной файлы по строке. E
: Запустите этот скрипт на каждой строке. Само сценария просто печатает 1-й и 2-й поля. В случае строк последовательности она просто будет напечатана единственное поле доступно, первый. который является всей линией.