【发布时间】:2017-02-18 00:26:45
【问题描述】:
我想在每出现一次“>”时拆分一个文本文件,如下面粘贴的(对不起,长度)。例如,每第二次出现“>”,但我需要能够更改该数字。
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
我得到了正确的输出(拆分)文件,而不是所需的结果,除了第一个文件,它只包含一次“>”(而不是两个),如下所示:
cat test_0.txt
>eeefkdfn
a
a
a
cat test_1.txt
>chr1 4ufjdhf
b
b
b
b
>
c
c
知道这是为什么吗?谢谢!
【问题讨论】:
-
有点难以理解您想要实现什么以及您的问题是什么。我建议您重新表述您的问题,并稍微合并一下,并清楚地突出“问题部分”和“问题部分”,这将使我们所有人更容易理解并尝试帮助您与问题。谢谢。
-
稍微编辑了我的帖子,希望更清楚!如果不让我知道缺少什么
-
交换增量和打印部分的顺序。您在第一部分之前递增。
-
@stark 你能举个例子吗?我不确定你的意思
-
你需要考虑你的数学。首先你做 1/2 这将是零,但是当它再次增加到 2/2 时,你已经在更改文件的名称