特定の行を検索するには1 GBを超えるテキストファイルを読む必要があります。これは、Perl、PHPまたはJavaで記述する必要があります。このメソッドは、サーバーをロードすべきではありません。1 GBのファイルサイズの行を読み込んで見つけてください
どうすればいいですか?
特定の行を検索するには1 GBを超えるテキストファイルを読む必要があります。これは、Perl、PHPまたはJavaで記述する必要があります。このメソッドは、サーバーをロードすべきではありません。1 GBのファイルサイズの行を読み込んで見つけてください
どうすればいいですか?
"正しい仕事のための正しいツール"の姿勢を持ち、新しいツールを学ぶのに気を使うことができれば、perl、awk、sedさえあれば、まさにこの種の仕事のための非常に良いツールです。それ以外の場合、完全な言語があれば、Javaもこの仕事をすることができます。しかし、BufferedReaderのようなバッファされたクラスを使用してください。さもなければ、これは非常に遅くなります。 Perlで
例:
use strict;
use warnings;
open INFILE, "<infile" or die;
open OUTFILE, ">outfile" or die;
while(<INFILE>) {
$_=~s/source-regex/replace-with/g;
print OUTFILE;
}
私はワンライナーは動作しますが、もう少し複雑であるだろう。 Perlで
複合体?/source-regex/'input.txt> output.txt' – TLP
もし、何らかの置換があると私は理解しました。この1ライナーはうまくいくでしょう。ありがとう。 – 0xCAFEBABE
交換は複雑ではありません。単に 'm //'を 's ///'に変更して印刷してください。同じジャガイモ。 – TLP
ここではあまり多くはありませんが、BufferedReader
を作成して、一度に1行ずつ読み込み、探している行があるかどうかを確認してください。
:ワンライナーとして
use strict;
use warnings;
my $line = 'what to be searched';
open my $fh, '<', '/path/to/the/file' or die "unable to open file: $!";
while(<$fh>) {
chomp;
if ($_ eq $line) {
print "found $line at line $.\n";
last;
}
}
:スクリプトとして
perl -nwe 'print if /source-regex/' input.txt > output.txt
:
use strict;
use warnings;
while (<>) {
print if /source-regex/;
}
使用法:perl script.pl input.txt > output.txt
最適化する方法があります。これ、しかしあなたが与えた情報でそれ以上のことはできません。検索には時間がかかり、正規表現によっては遅くなることがあります。
あなたはセキュリティ上の懸念を持っている場合は、開いている明示的なファイルは安全です:
open my $input, '<', shift or die $!;
while (<$input>) {
...
がファイルを読み込むにINFOMATIONためhttp://download.oracle.com/javase/tutorial/essential/io/file.htmlを参照してください。 Javaで。 – Qwerky
は試験問題か何ですか? –