2017-05-18 18 views
0

Linuxのヒントが必要です。パターンに基づいてLinux上のファイルを分割する

私はファイルを持っていますが、複数のレコードを持つバッチがあります。

123 HDR 098 LLK 
blah 
blah 
blah 

456 HDR 098 LLK 
blah 
blah 
blah 
789 HDR 098 LLK 

blah 
blah 
blah 

と同じように私は、これは次のHDR(非包括的)に(包括的) "HDR" から複数のファイルに分割する必要があります。

このようにして、ファイルに100個のバッチがある場合は、これをそれぞれ4個のファイル25に分割する必要があります。

+0

StackOverflowは、プログラミングコードを修正する手伝いをしています。無料のコーディングサービス、チュートリアル、リサーチ、ツール、推奨事項、図書館、およびコードのリクエストは、話題にはなりません。 *** ***を読んでくださいhttp://stackoverflow.com/help/how-to-ask、http://stackoverflow.com/help/dont-ask、http://stackoverflow.com/help/mcveとここでQを投稿する前に[ツアー](http://stackoverflow.com/tour)に行ってください。あなたのコードを教えてください! 幸運。 – shellter

答えて

2

awkレスキュー!より一般

awk '/HDR/{c++} {print > FILENAME"_"c }' file 

または

は、N = 3については、例えば、分割されたファイルに nパターンを取得します。

awk -v n=3 '/HDR/{k=int(c/n)+1; c++} {print > FILENAME"_"k }' file  
+0

それは素晴らしい...均等分割@karakfaです。私は冗談を持ってawkが救助のために来るだろう。これを私の選択の数にまで拡張する方法は? 1つのファイル内のx個のバッチを指定します。 –

+0

内容に依存するので、ファイルのパターン数と同じ数の分割ファイルが得られます。あるいは、何か他のことを求めているかもしれませんか? – karakfa

+0

我々は非常に近いです。私は5つのパターンマッチにグループ化してファイルに書き込むことができるかどうかを尋ねています。あたかもawk '/ HDR/{c + 5} {print> FILENAME "_" c}'ファイルのようなもので、一定数の一致が見つかるまで分割ファイルに書き込んでいないかのようです。 –

関連する問題