簡體   English   中英

使用Linux中的過濾器將txt文件中的行分組,以創建多個txt文件

[英]grouping lines from a txt file using filters in Linux to create multiple txt files

我有一個txt文件,其中每行以參與者編號開頭,然后是日期和其他變量(僅數字),格式如下:

 S001_2 20090926 14756 93    
 S002_2 20090803 15876 13    

我想編寫一個腳本來創建較小的txt文件,每個文件僅包含20個參與者(因此,第一個包含從S001_2到S020_2的行;第二個從S021_2到S040_2的行;主題總數約為200)。 但是,主題沒有組織,因此我無法使用sed設置范圍。

根據行開頭的數字(SOO1_2),將ppts過濾成塊的最佳命令是什么?

提前致謝。

不帶任何參數的排序應該是合適的,因為您的數字中有前導零,例如S001_2 因此,首先對文件進行排序:

sort file.txt > sorted.txt

然后,您將可以使用sed為file_sort.txt設置范圍

這看起來像一個完整的腳本,用於將已排序的文件拆分為20行文件:

num=1;
i=1;
lines=`wc -l sorted.txt | cut -d' ' -f 1`;#get number of lines
while [ $i -lt $lines ];do
    sed -n $i,`echo $i+19 | bc`p sorted.txt > file$num;
    num=`echo $num+1 | bc`;
    i=`echo $i+20 | bc`;
done;

使用split命令分割不帶范圍和sed的文件(或過濾的結果)。 根據文檔,這應該起作用:

貓file.txt | 分割-l 20-PREFIX

這將產生文件PREFIXaa,PREFIXab,...(請注意,它不會將.txt擴展名添加到文件名中!)

如果要首先過濾文件,請使用@Sergey描述的方式:

貓file.txt | 排序 分割-l 20-PREFIX

$ split -d -l 20 file.txt -a3 db_

產生:db_000,db_001,db_002,...,db_N

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM