問題タブ [fileparsing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
1815 参照

ftp-client - WindowsFTPサーバーのファイル詳細の解析

c#コードを介してFTPサーバーに接続しようとしていますが、ファイルとディレクトリのリストを取得しています。そして、私はArrayList(すべての属性を含む)に保存しています。FTPサーバーの種類はSYSftpコマンドで確認できます。UNIXベースのファイルの正規表現を使用してfile\directories属性を解析します。しかし、WindowsFTPサーバーファイルを解析するための表現はありません。私はそれを作るのに助けが必要です。

これらを解析する必要があります。日付、時刻、Dir \ File、ファイルの名前

助けてください。ありがとう。

0 投票する
3 に答える
2100 参照

java - Java で特定のパターンを含む文字列を出力する

.csv ファイルの行内で正規表現を見つけようとしているので、最終的にすべての一致を別のファイルに保存し、他のジャンクをすべて失うことができます。

したがって、私のファイルの行は次のようになります: MachineName,User,IP,VariableData,Location

一致させたいのは VariableData です。一致する場合は、その行を出力します。VariableData のバリエーションの 10 のうち 3 つだけが必要であり、それらの 3 つのうち、異なる番号が付けられているため (たとえば、「pc104、pccrt102、pccart65」)、これにパターンを使用しています。

Scanner Class を使用してこれを実行し、理解できるようにできるだけシンプルにしようとしています。これが私がこれに向かっていたところです...(パターンは完全ではありません。テストのためにこのようにしてください)。

このコードはループし、.hasNext() メソッドが自分自身をリセットしていると推測します。私は Matcher クラスを少しいじりましたが、式を一致させる方法を見つけただけで、行全体を取得することはできませんでした。

私の他の考えは、パターンを含む行を何らかの形で数えてから、戻ってその数に対応する行を出力することでした。

0 投票する
1 に答える
73 参照

large-files - パケットのトレースが与えられた場合、それらをどのようにフローにグループ化しますか?

私はこれまでにこれらの方法を試しました:

1) 送信元 IP/ポートと宛先 IP/ポートをキーとしてハッシュを作成します。ハッシュ内の各位置は、パケットのリストです。次に、ハッシュはファイルに保存され、各フローは特殊文字/行で区切られます。問題: 大規模なトレースに十分なメモリがありません。

2) 上記と同じキーでハッシュを作成しますが、ファイル ハンドルのみをメモリに保持します。各パケットは、正しいファイルを指すハッシュ [キー] に入れられます。問題: フロー/ファイルが多すぎて (~200k)、メモリ不足になる可能性もあります。

3) ソース IP/ポートと宛先 IP/ポートをハッシュし、情報をファイルに入れます。2 と 3 の違いは、ここでは操作ごとにファイルを開いたり閉じたりするため、同時に多くのファイルを開きすぎてメモリ不足になる心配がありません。問題点: 遅すぎる、ファイル数が 2 と同じなので実用的でない。

4) ソース IP/ポート ペアのハッシュを作成し、フローごとにトレース全体を反復します。そのフローの一部であるパケットを取得し、それらを出力ファイルに配置します。問題: 200k のフローを持つ 60 MB のトレースがあるとします。このようにして、たとえば 60 MB のファイルを 20 万回処理します。繰り返しながらパケットを削除すると、それほど苦痛ではなくなるかもしれませんが、これが良い解決策になるかどうかはわかりません。

5) それらを IP 送信元/送信先で分割し、それぞれに対して 1 つのファイルを作成し、フローを特殊文字で区切ります。まだファイルが多すぎます (+50k)。

今は Ruby を使っていますが、これは悪い考えだったのかもしれません。現在、トレースを tshark でフィルタリングして、関連する情報のみを表示しているため、これ以上小さくすることはできません。

1) で説明したように、C#/Java/C++ を使用してすべてをメモリにロードすることを考えましたが、特に、より効率的な方法でも後でメモリが不足する可能性があるため、ここでより良いアプローチがないかどうか疑問に思っていました。より大きなトレースを使用する必要がある場合は言語。

要約すると、私が直面している問題は、ファイルが多すぎるか、メモリが不足していることです。

また、情報をフィルタリングするためのツールを検索しようとしましたが、存在しないと思います。私が見つけたものは、いくつかの統計を返すだけで、必要に応じてすべてのフローをスキャンするわけではありません。

0 投票する
1 に答える
225 参照

ruby - Ruby では、ログ ファイルの 2 行を比較します。両方に同じ「WORD」が含まれていますが、最後に書き込まれた行のみが出力されます。

ここにサンプルラインがあります

ここで、LATEST 行は最新の日付文字列を含む行である必要があり、それは印刷する必要がある行であり、パーサーがログ ファイルで実行される NEXT 時間に加えて、何らかの方法で前の LATEST 行を既存の行と比較する必要があります。最新のものであり、何も変更されておらず、古い行がまだ最新のものである場合、または新しい行があるが、新しいログ行のみが印刷され、新しいログエントリがない場合は印刷されない場合があります.

0 投票する
1 に答える
70 参照

c# - ディスクC#に書き込む前のファイルの内容の処理

だから私はファイルを復号化し、これを含むバイト配列を残しました(ユニエンコード):

「私の極秘メッセージ」。はファイルの内容であり、いつでもファイルの内容(Word、Excelなど)にすることができます。この情報を解析し、元のファイルをドライブに書き戻すための最良の方法は何でしょうか。

このバイナリデータが実際に電子メールの添付ファイルである可能性はありますか?電子メールの添付ファイルを再作成してから、元のファイルを引き出すにはどうすればよいですか?

0 投票する
4 に答える
2353 参照

java - Java でのファイル処理

生徒の記録を含むサイズ 2GB のファイルがあります。各レコードの特定の属性に基づいて学生を検索し、結果を含む新しいファイルを作成する必要があります。フィルタリングされた学生の順序は、元のファイルと同じである必要があります。Java IO API とスレッドを使用して、メモリの問題なしでこれを行う効率的で最速の方法は何ですか? JVM の最大ヒープ サイズは 512MB に設定されています。

0 投票する
1 に答える
2153 参照

php - 指定された構造のバイナリ ファイルを生成する

バイナリ形式の設定を使用するデバイス ウィッチがあり、そのファイルをオンザフライで生成する必要があります。

ファイル構造は、次の形式のいくつかの構成設定 (パラメーターごとに 1 つ) で構成する必要があります。

  • タイプ
  • 長さ
  • 価値

どこ:

  • タイプ: パラメータを定義する単一オクテットの識別子です
  • 長さ: オクテット単位の値フィールドの長さを含む単一のオクテットです (タイプ フィールドと長さフィールドは含まれません)。
  • 値: パラメータの特定の値を含む 1 ~ 254 オクテットです。

私は対応するテーブルを持っています

そのテーブルをそのバイナリ形式に解析する方法は? そして、2 番目の方法として、そのバイナリ ファイルを解析して、php 配列形式に戻す方法を教えてください。

0 投票する
2 に答える
1992 参照

perl - perl のローテーション ログ ファイル

プロセスの CPU とメモリの状態を 1 分ごとに保存するログ ファイルを実装しました。ファイルの最大サイズを 3MB に制限しました (私の目的には十分です)。

スクリプトは 1 分ごとに cron ジョブによって呼び出され、スクリプトはその分の詳細をログに記録し、ファイルの名前を "Log_.log" に変更します

サイズが「3MB - 100 バイト」に達したら、ファイル ポインタを先頭を指すようにリセットし、ログ ファイルの最初のエントリを上書きして、ファイルの名前を「Log_<0+some offset>.log」に変更します。

ファイルポインターの位置を更新するために毎分ファイルの名前を変更しているので、それは良い/効率的な方法ですか?

この目的のために複数のログ ファイルを維持したくありません。

私にとっての別のオプションは、ファイル内のファイルポインターの位置を維持することですが、....別のファイル!! このオプションが良い場合、それを維持することに興味はありません:)

前もって感謝します。

0 投票する
4 に答える
1328 参照

perl - ファイルのある行を別の行で更新する Perl スクリプト

複数の行を持つテキスト形式のデータ ファイルがあります。現在、間違ったデータを持つ特定の行があり、正しいデータを持つ行で更新する必要があります。例えば、

実際のデータは異なりますが、これは単純化されたバージョンです。ご覧のとおり、A1 が A で A4 が Y などの特定の Col1 があります。残りの列 Col3、Col4 ... は Col2 に依存します。したがって、Col1 に A がある場合 (A1、A2、A3 など)、Col2 が A であるかどうかを確認する必要があります。そうでない場合は、A である行に基づいて Col2、Col3 .... を更新する必要があります。

これを Perl でどのように実現できますか。この種の操作は update ステートメントを使用してデータベースで実行できることは知っていますが、ここではその余裕がなく、プログラムで実行する必要があります。

編集: ファイルはタブ区切りで、データは任意の英数字または ASCII 文字を含むことができる文字列です。

0 投票する
2 に答える
171 参照

perl - ファイル処理のためにperlコードルーチンをマージするのに役立ちます

これらの(2)プロセス/コードを連携させるにはperlの助けが必要です。私はそれらを個別に動作させてテストすることができましたが、特にループ構造を使用してそれらをまとめるのに助けが必要です。foreachを使用する必要があるかどうかはわかりません。とにかくコードは以下のとおりです。

また、私がこの言語を学んでいるので、どんなベストプラクティスも素晴らしいでしょう。ご協力いただきありがとうございます。

これが私が探しているプロセスフローです:

  • ディレクトリを読む
  • 特定のファイルを探す
  • ファイル名を使用していくつかの重要な情報を取り除き、新しく処理されたファイルを作成します
  • 入力ファイルを処理します
  • 読み取った入力ファイルごとに新しく処理されたファイルを作成します(10で読み取った場合は、10個の新しいファイルを作成します)

パート1:

パート2: