2017-05-04 5 views
-5

ファイルを分割します。 14ファイル中413行。bash:ファイルを14個に分割(awk?split?sed?...?)

file_all = 413 lines 
file_split_1 = 29 lines or 30 lines 
file_split_2 = 29 lines or 30 lines 
file_split_2 = 29 lines or 30 lines 
: 
: 
file_split_14 = 36 lines or 23 lines 

+1

どこで失敗していますか? –

+0

どの質問にも依存しますか? – SaggingRufus

+1

'man split'はアイデアかもしれません。 – ceving

答えて

0

質問は絶望的に不明であるが、おそらくあなたは、ような単純なものを探しています:私はこのコードは仕事をすることを願っています

awk 'NR%30==1{of++}{print > "file_split_"of}' file_all 
+0

不明な点は何ですか?私は413行のfile_allという名前のファイルを持っています。私はこのファイルをfile_split_1/file_split_2/.../file_split_14という名前の複数のファイルに分割します。 – Daniela

+0

あなたの質問はひどく不明瞭です。 "あなたはファイルを分割します"。大丈夫ですので、ファイルを分割します。質問はなんですか? "ファイルを分割するにはどうすればいいですか?"あるいは、ファイルを14個のファイルに分割するにはどうすればよいのですか?構成ファイルが29行か30行になるかどうかは気にしません。残りは14番目のファイルですか?あるいは、「どのようにファイルを分割し、各サブファイルに29行か30行をランダムに入れてもよいか」という質問をしていますか? –

1

。あなたが望むものでファイル名を変更するだけで、それは仕事をします。

fileNum=14 
var=13 
totalLines=$(cat file.txt|wc -l) 
eachLine=$(expr $totalLines/$fileNum) 
finalLine=$(expr $var \* $eachLine) 
finalLine=$(expr $totalLines - $finalLine) 
tmp=$totalLines 
for i in {1..13} 
do 
fileName=$(echo file$i) 
cat file.txt | tail -$tmp | head -$eachLine > $fileName 
tmp=$(expr $tmp - $eachLine) 
done 
cat exam2014.txt | tail -$finalLine | head -$finalLine > file14 
関連する問題