タグ付けされた質問 「split」

8
テキストファイルを固定数の単語を含む行に分割する
関連していますが、満足のいく答えはありません。大きなテキストファイルを500ワード程度のチャンクに分割するにはどうすればよいですか。 私は、1行に10 ^ 7ワードを超えるテキストファイル(http://mattmahoney.net/dc/text8.zip)を取得し、それをそれぞれNワードの行に分割しようとしています。私の現在のアプローチは機能しますが、かなり遅くて醜いです(シェルスクリプトを使用)。 i=0 for word in $(sed -e 's/\s\+/\n/g' input.txt) do echo -n "${word} " > output.txt let "i=i+1" if [ "$i" -eq "1000" ] then echo > output.txt let "i=0" fi done これをより速く、またはよりコンパクトにするためのヒントはありますか?

7
大きなディレクトリツリーを指定されたサイズのチャンクに分割しますか?
光ディスクにバックアップしたいディレクトリツリーがあります。残念ながら、これは1つのディスクのサイズを超えます(約60GBです)。このツリーをハードリンクなどの適切なサイズのチャンクに分割するスクリプトを探しています(オリジナルはそのままにしておきます)。次に、これらの一口サイズのツリーをバックアッププロセスにフィードします(PAR2の冗長性を追加するなど)。 派手なスクリプトではありませんが、既に行われているようです。提案? (ファイルの書き込みが完了する前に、さらに多くのことを実行したいので、1つのステップでスパンと書き込みを行うことはできません。)

4
並行して作成された他の3つのストリームから単一の出力ストリームを作成する
異なるフォーマットの3種類のデータがあります。データ型ごとに、それを単一の統一フォーマットに変換するPythonスクリプトがあります。 このPythonスクリプトは遅く、CPUにバインドされている(マルチコアマシンのシングルコアに)ため、スクリプトの3つのインスタンスを実行し(データタイプごとに1つ)、それらの出力を組み合わせてに渡しsortます。基本的に、これと同等です: { ./handle_1.py; ./handle_2.py; ./handle_3.py } | sort -n しかし、3つのスクリプトが並行して実行されます。 ストリームを処理するスクリプトのn個のインスタンス間で、いくつかのstdoutストリームをラウンドロビンするためにGNU が使用されているこの質問を見つけましたsplit。 分割されたmanページから: -n, --number=CHUNKS generate CHUNKS output files. See below CHUNKS may be: N split into N files based on size of input K/N output Kth of N to stdout l/N split into N files without splitting lines …

1
非圧縮ファイルの見積もりが間違っていますか?
大きな(〜60G)圧縮ファイル(tar.gz)がありました。 私はsplitそれを4つの部分に分割してから、catそれらを一緒に結合していました。 しかし、今、私が非圧縮ファイルのサイズを見積もろうとしているとき、それはオリジナルよりも小さいことがわかりましたか?これはどのようにして可能ですか? $ gzip -l myfile.tar.gz compressed uncompressed ratio uncompressed_name 60680003101 3985780736 -1422.4% myfile.tar

7
複数行のレコードを分割せずに大きなテキストファイルを効率的に分割する方法
私は大きなテキストファイルを持っています(gzしたとき〜50Gb)。ファイルには4*N行またはNレコードが含まれています。つまり、すべてのレコードは4行で構成されます。このファイルを、入力ファイルのおよそ25%のサイズの4つの小さなファイルに分割したいと思います。ファイルをレコード境界で分割するにはどうすればよいですか? 素朴なアプローチはzcat file | wc -l、行数を取得し、その数を4で除算してからを使用することsplit -l <number> fileです。ただし、これはファイルを2回超えるため、行カウントは非常に遅くなります(36分)。もっと良い方法はありますか? これは近いですが、私が探しているものではありません。受け入れられた回答も行数をカウントします。 編集: このファイルには、fastq形式のシーケンスデータが含まれています。2つのレコードは次のようになります(匿名化)。 @NxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxGCGA+ATAGAGAG xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxTTTATGTTTTTAATTAATTCTGTTTCCTCAGATTGATGATGAAGTTxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + AAAAA#FFFFFFFFFFFFAFFFFF#FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF<AFFFFFFFFFFAFFFFFFFFFFFFFFFFFFF<FFFFFFFFFAFFFAFFAFFAFFFFFFFFAFFFFFFAAFFF<FAFAFFFFA @NxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxGCGA+ATAGAGAG xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxCCCTCTGCTGGAACTGACACGCAGACATTCAGCGGCTCCGCCGCCxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + AAAAA#FFFFF7FFFFFFAFFFFA#F7FFFFFFFFF7FFFFFAF<FFFFFFFFFFFFFFAFFF.F.FFFFF.FAFFF.FFFFFFFFFFFFFF.)F.FFA))FFF7)F7F<.FFFF.FFF7FF<.FFA<7FA.<.7FF.FFFAFF 各レコードの最初の行はで始まり@ます。 EDIT2: zcat file > /dev/null 31分かかります。 EDIT3: 最初の行のみがで始まり@ます。他の誰もこれまでしません。こちらをご覧ください。レコードは整理された状態である必要があります。結果のファイルに何かを追加することはできません。

4
スプリットでGNU Parallelを使用する
かなり巨大なファイルをpostgresqlデータベースにロードしています。このI最初の使用を行うにはsplit小さいファイル(30GBごと)を取得するためにファイルにして、私が使用してデータベースにそれぞれの小さなファイルをロードGNU Parallelしてpsql copy。 問題は、ファイルを分割するのに約7時間かかり、コアごとにファイルのロードを開始することです。私が必要なのはsplit、ファイルの書き込みが終了するたびにファイル名をstd出力に出力して、パイプParallel処理を行い、split書き込みが終了したときにファイルのロードを開始するように指示する方法です。このようなもの: split -l 50000000 2011.psv carga/2011_ | parallel ./carga_postgres.sh {} splitマニュアルページを読みましたが、何も見つかりません。splitまたは他のツールでこれを行う方法はありますか?

4
bashのみを使用して単一の文字列を文字配列に分割する
私はbashのみを使用して配列に分割'hello'したいのですがh e l l o、sedでそれを行うことができますsed 's/./& /g'が、区切り文字が何であるかわからない場合、または区切り文字が任意の場合に、文字列をBashの配列に分割する方法を知りたいです単一の文字。${i// /}区切り文字が不明なため、ある程度の創造性がなければ使用できないと思います。また、式が正規表現を受け入れるとは思いません。[[string =〜([az]。)。*]]でBASH_REMATCHを使用してみましたが、期待どおりに動作しません。ある種string.split()の動作を達成するためにbashのみを使用する適切な方法は何ですか?その理由は、すべてのbashでrevユーティリティーを記述しようとしているためです。 while read data; do word=($(echo $data|tr ' ' '_'|sed 's/./& /g')) new=() i=$((${#word[@]} - 1)) while [[ $i -ge 0 ]]; do new+=(${word[$i]}) (( i-- )) done echo ${new[@]}|tr -d ' '|tr '_' ' ' done しかし、私はtrとsedを使用しました。分割を適切に行う方法を知りたいので、すべてbashになるように修正します。楽しみのためだけに。
9 bash  string  split 


6
エントリを分割せずに大きなファイルをチャンクに分割する
UIEE形式でフォーマットされたかなり大きな.msgファイルがあります。 $ wc -l big_db.msg 8726593 big_db.msg 基本的に、ファイルは次のようなさまざまな長さのエントリで構成されています。 UR|1 AA|Condon, Richard TI|Prizzi's Family CN|Collectable- Good/Good MT|FICTION PU|G.P. Putnam & Sons DP|1986 ED|First Printing. BD|Hard Cover NT|0399132104 KE|MAFIA KE|FICTION PR|44.9 XA|4 XB|1 XC|BO XD|S UR|10 AA|Gariepy, Henry TI|Portraits of Perseverance CN|Good/No Jacket MT|SOLD PU|Victor Books DP|1989 BD|Mass Market Paperback NT|1989 tpb …

1
メディア間でボリュームを分割するK3b
K3bでボリュームを複数のメディアに分割するにはどうすればよいですか?たとえば、6 GBのフォルダー(6 GBの1つのファイルではない)を指定すると、手動で行う代わりに、4.4 GBのディスクが自動的にいくつか作成されますか? K3Bで実行できない場合、実行できるソフトウェアはありますか?
8 iso  split  mkisofs 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.