我有一个巨大的文件,45 GB。我想把它分成4部分。我可以通过以下方式做到这一点split --bytes=12G inputfile:
问题是它扰乱了文件的模式。此拆分根据大小剪切文件,因此不会保留格式。我的输入文件如下所示:
Inspecting sequence ID chr1:11873-13873
V$ARID3A_04 | 1981 (-) | 0.899 | 0.774 | tttctatAATAActaaa
V$ARID3A_04 | 1982 (+) | 0.899 | 0.767 | ttctaTAATAactaaag
Inspecting sequence ID chr1:11873-13873
V$ARID3A_04 | 1981 (-) | 0.899 | 0.774 | tttctatAATAActaaa
V$ARID3A_04 | 1982 (+) | 0.899 | 0.767 | ttctaTAATAactaaag
Run Code Online (Sandbox Code Playgroud)
我想分割文件,但也要提到分割它的模式,Inspecting以便我返回的分割文件必须如下所示:
Inspecting sequence ID chr1:11873-13873
V$ARID3A_04 | 1981 (-) | 0.899 | 0.774 | tttctatAATAActaaa
V$ARID3A_04 | 1982 (+) | 0.899 | 0.767 | ttctaTAATAactaaag
V$ARNT_Q6_01 | 390 (+) | 1.000 | 0.998 | tACGTGgc
Run Code Online (Sandbox Code Playgroud)
和这个:
Inspecting sequence ID chr1:11873-13873
V$ARID3A_04 | 1981 (-) | 0.899 | 0.774 | tttctatAATAActaaa
V$ARID3A_04 | 1982 (+) | 0.899 | 0.767 | ttctaTAATAactaaag
V$ARNT_Q6_01 | 390 (+) | 1.000 | 0.998 | tACGTGgc
Run Code Online (Sandbox Code Playgroud)
NOTE:这种图案匹配应该是第二优先选择,而第一优先应该是尺寸。例如,将文件拆分为 12 GB 的块,并根据Inspecting. 如果我仅根据模式进行拆分Inspecting,那么我将获得数千个拆分文件,因为此模式会一次又一次重复。
用它来做sed会非常困难,因为你没有简单的方法来跟踪到目前为止所读取的字符。使用以下命令会更容易awk:
BEGIN {
fileno = 1
}
{
size += length()
}
size > 100000 && /Inspecting/ {
fileno++
size = 0
}
{
print $0 > "out" fileno;
}
Run Code Online (Sandbox Code Playgroud)
根据您的需要调整大小。awk处理非常大的数字可能会出现问题。因此,最好跟踪到目前为止已读取的行数。
| 归档时间: |
|
| 查看次数: |
1450 次 |
| 最近记录: |