Я хочу разбить текстовый файл, подобный тому, который был вставлен ниже (извините за длину), на каждое n вхождение «>». Например, каждое второе появление «>», но мне нужно иметь возможность изменить это число.Awk: Разделение файла на n-ом вхождении разделителя, неправильный первый файл с разделом
test_split.txt:
>eeefkdfn
a
a
a
>c 4ufjdhf
b
b
b
b
>
c
c
> c
d
d
d
d
d
>3
>cr
>c3
e
e
e
e
e
> 5
f
f
f
f
>cr
g
g
g
g
> cr dkjfddf
h
h
h
h
Так что я хочу, чтобы выходные файлы этого они (только показывая первые два):
file_1.txt:
>eeefkdfn
a
a
a
>c 4ufjdhf
b
b
b
b
file_2.txt :
>
c
c
> c
d
d
d
d
d
и т.д.
Вопрос:
Я пытался достичь этого результата с помощью этой команды AWK:
awk '/^>/ {n++} { file = sprintf("file_%s.txt", int(n/2)); print >> file; }' < test_split.txt
И вместо желаемого результата, я получаю правильный выходные файлы (Split),
кошка test_0.txt
>eeefkdfn
a
a
a
: для первого, который содержит только один вхождение «>» (вместо двух), как это, за исключением
кошка test_1.txt
>chr1 4ufjdhf
b
b
b
b
>
c
c
Любая идея, почему это? Спасибо!
Немного сложно понять, чего вы пытаетесь достичь и какова ваша проблема. Могу ли я предложить вам любезно перефразировать ваш вопрос с небольшой консолидацией и четко выделить «Проблемную часть» и «Вопрос-часть», что облегчит нам понимание и поможет вам с этим вопросом. Благодарю. – User9102d82
Отредактировано мое сообщение немного, я надеюсь, что это яснее! Если не сообщите мне, что не хватает – arielle
Поменяйте порядок ваших приращений и разделов печати. Вы увеличиваете до первого раздела. – stark