[解決済み】ファイル内のすべての数値をすばやく合計する方法は?
2022-04-08 12:18:04
質問
数千の数字を含むファイルがあり、それぞれが独立した行になっています。
34
42
11
6
2
99
...
ファイル内のすべての数値の合計を表示するスクリプトを書きたいと思っています。解決策はあるのですが、あまり効率的ではありません。(実行に数分かかります。) もっと効率的な解決策を探しています。何か提案はありますか?
どのように解決するのですか?
Perlのワンライナーとしては、基本的に
awk
で解決します。
Ayman Houriehの回答
:
% perl -nle '$sum += $_ } END { print $sum'
Perlのワンライナーが何をするのか気になる方は、デパイスしてみてはいかがでしょう。
% perl -MO=Deparse -nle '$sum += $_ } END { print $sum'
その結果、誰も自分で書かないような形式の、より冗長なプログラムができあがりました。
BEGIN { $/ = "\n"; $\ = "\n"; }
LINE: while (defined($_ = <ARGV>)) {
chomp $_;
$sum += $_;
}
sub END {
print $sum;
}
-e syntax OK
試しに、1,000,000個の数字(0〜9,999の範囲)を含むファイルで試してみました。私のMac Proでは、ほぼ瞬時に返されました。これは残念なことです。
mmap
は本当に速いのですが、ちょうど同じような時間です。
use 5.010;
use File::Map qw(map_file);
map_file my $map, $ARGV[0];
$sum += $1 while $map =~ m/(\d+)/g;
say $sum;
関連
-
[解決済み] php] <defunct>のプロセスを削除することはできますか?
-
[解決済み] Linuxで特定のテキストを含むすべてのファイルを検索するにはどうすればよいですか?
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで通常のファイルが存在しないかどうかを判断する方法を教えてください。
-
[解決済み] Bashスクリプトからプログラムが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] ワイルドカードマッチングに基づいて、現在のフォルダとサブフォルダ内のすべてのファイルを再帰的に検索するにはどうすればよいですか?
-
[解決済み] テキストファイルから、特定の文字列を含むすべての行を削除するにはどうすればよいですか?
-
[解決済み] Bashで変数で定義された数値の範囲を反復処理するにはどうすればよいですか?
-
[解決済み] あるディレクトリにあるすべてのコード行を再帰的にカウントするにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】環境変数TERMが設定されていない件
-
[解決済み] sysrootとは何ですか、そしてどのように作成しますか?
-
[解決済み】gcc: エラー: 認識されないコマンドラインオプション
-
[解決済み] chmod: 'my_script.sh' のパーミッションを変更しました。操作が許可されていない
-
[解決済み] カット」を使った最後のフィールドの探し方
-
[解決済み] at&tアセンブリの「push」と「pushq」の違いは何ですか?
-
[解決済み] Bashを使ったファイルの検索とコピー [重複]。
-
[解決済み] php] <defunct>のプロセスを削除することはできますか?
-
[解決済み] Nautilusのようにコマンドラインからマウントする方法とは?[クローズド]です。
-
[解決済み] 次のコマンドの -print0 の意味を教えてください。