Linux で大きなファイルを楽に読む方法

Linux で大きなファイルを楽に読む方法
Linux で大きなファイルを読む フィーチャー画像

巨大なログ ファイル、テキスト ファイル、またはデータセットを分析する必要がありますか? あなただけではありません。システム リソースを監視しながらコンテンツを表示または管理しようとすると、Linux で大きなファイルを処理するのが困難になることがあります。幸いなことに、コマンドless、Vim などのユーティリティや、ドキュメントを小さなセクションに分割するテクニックなど、Linux で大きなファイルを読み取るためのさまざまな方法があります。

この記事では、さまざまなツールを使用して Linux 上で大きなファイルを読み取ったり、特定の情報を抽出したりするためのさまざまな手法について説明します。

Lessコマンドの使用

大きなテキスト ファイルの内容を表示したり、すばやく検索を実行したりするための軽量ツールをお探しですか? このlessコマンドが最適なソリューションです。

このユーティリティの私のお気に入りの点の 1 つは、標準のテキスト エディターとは異なり、ファイル全体をメモリにロードせずに、一度に 1 ページずつファイルを表示できることです。これにより、特に大きなファイルの場合、処理速度が大幅に向上し、膨大なドキュメントやログを確認するプロセスが簡素化されます。

これを使用するには、次のようにlessファイル名に続けて入力するだけです。

このコマンドはインターフェイスを開きless、矢印キーを使用してドキュメントを行ごとにスクロールしたり、 を押して/検索語句を入力して特定の用語を検索したりすることができます。

パイプライン演算子を使用して、他のコマンドからの出力を読み取ることもできますless。たとえば、lsコマンドの出力を表示するには、次のようにします。

ターミナル ウィンドウで ls コマンドの出力を読み取ります。

このlessコマンドには、機能をカスタマイズするための複数のオプションも用意されています。これらのオプションを組み合わせて、lessニーズに合わせて動作をカスタマイズできます。

たとえば、特定の用語を検索するには、-pオプションを使用できます。less

Linux 上の特定のファイル内の特定のパターンを検索します。

このコマンドは出力を開き、単語sampleの最初の出現箇所に直接ジャンプします。

次のコマンドを使用して、ファイルの内容の横に行番号を表示することもできます-N

less インターフェース ユーティリティの番号付け出力コマンド。

Split コマンドを使用してファイルを分割する

場合によっては、大きなファイルを処理する最善の方法は、ファイルをより小さく、より扱いやすい部分に分割することです。特に、ファイルをセクションごとに読み込んだり処理したりする場合です。たとえば、ファイル サイズが 1 GB を超える場合や、ファイルに 1 億行以上含まれている場合は、ファイルを分割する傾向があります。

ファイルはサイズまたは行数で分割できます。テキスト ファイルの場合は、単語や行が半分にカットされないように、行ごとに分割するのが一般的に最適です。

たとえば、特定の行数に基づいてファイルを分割するには、次のコマンドを実行します。

split コマンドを使用してファイルを小さなチャンクに分割します。

この場合、ファイル「samplefile.txt」は、それぞれ 10,000 行からなる複数の部分に分割されます。結果のファイルの名前は「part_aa」、「part_ab」などになります。これで、メモリの過剰使用やシステム パフォーマンスの低下を心配することなく、ファイルの小さなセグメントを開いて調べることができます。

100 MB などのサイズに基づいて大きなファイルを分割する場合は、次のコマンドを実行します。

ミッドナイトコマンダーの使用

Midnight Commander (MC) は、ファイルやディレクトリをナビゲートするためのユーザーフレンドリーなビジュアル インターフェイスを提供する、デュアル パネルのテキストベースのファイル マネージャーです。

MC を使用すると、ファイルをインターフェイスで直接表示できるため、ドキュメント全体をメモリにロードせずに、大きなログやデータセットをすばやくスクロールできます。MC を使用すると、大きなファイルをスムーズかつ効率的に移動できることに感謝しています。

MC をインストールするには、次のコマンドを実行します。

ターミナルで実行して起動しますmc。起動したら、読み取りたい大きなファイルに移動し、その内容を調べます。

Midnight Commander ツールで大きなファイルを表示しています。

Kloggの使用

Klogg は、大容量のファイルを効率的に処理できる、高速でオープンソースの GUI ベースのログ ビューアです。ファイル全体をメモリに読み込む標準のエディタとは異なり、Klogg は必要に応じてファイルの一部のみを読み取り、メモリ使用量を最小限に抑えます。

Klogg はリアルタイムのフィルタリングおよび検索機能も提供しており、長時間スクロールすることなく特定のコンテンツを簡単に見つけることができます。

Klogg をインストールする前に、「/etc/apt/keyrings」ディレクトリを作成し、そこに GPG キーを追加する必要があります。GPG キーは、Klogg パッケージ リポジトリを検証するために不可欠です。

ディレクトリを作成するには、次のコマンドを実行します。

次のコマンドで GPG キーを追加します。

GPG キーを /etc/apt/keyrings ディレクトリに追加します。

次に、curl コマンドを使用して Klogg リポジトリをシステムに追加します。

パッケージ リストを次のように更新します。

最後に、次のコマンドを使用して Klogg をインストールできます。

Ubuntu に Klogg をインストールします。

インストールしたら、Klogg のインターフェースからファイルを開き、組み込みの機能を使用してファイルの内容を検索およびナビゲートするだけです。

Klogg で大きなファイルを読み取ります。

テキストエディタを使用して大きなファイルを読む

多くのテキスト エディターは大きなファイルの処理に苦労しますが、Vim や Emacs などのエディターは Nano や Gedit などの標準エディターよりも大きなファイルを効率的に処理します。

たとえば、Vim の機能を使用すると、コンテンツ全体を一度にメモリにロードせずに、ファイル内を移動して用語をすばやく検索できます。ただし、検索は既にロードされているファイルのセクションに限定されることに注意してください。

Vim でファイルを開くには、次のコマンドを実行します。

Grep コマンドでファイルを検索する

大きなファイル内の特定の情報を検索する場合は、grepコマンドを使用します。この強力なツールを使用すると、ファイルを検索し、クエリに一致する行のみを表示できます。

コマンド出力を にパイプする場合less、それは一時的なものであり、 を終了すると出力は失われることに注意してくださいless。後で表示するために出力を保持するには、出力をファイルにリダイレクトし、less などのコマンドライン ツールで開きます。

たとえば、大きなファイルから「ERROR」という単語を含むすべての行をフィルタリングするには、次のコマンドを実行します。

指定されたファイル内で grep コマンドを使用して検索します。

grep -i大文字と小文字を区別しない ( ) や単語全体のみを検索する ( )などの追加オプションを使用して検索を絞り込むことができますgrep -w

出力をファイルにリダイレクトする

特定の検索結果を後で確認するために保存したい場合は、コマンドの出力を新しいファイルにリダイレクトできます。

たとえば、grepコマンドを使用して行を検索し、新しいファイルに保存します。

演算子>は毎回新しいファイルを作成するか、既存のファイルを上書きします。既存のファイルにデータを追加するには、>>の代わりにを使用します>

HeadコマンドとTailコマンドの使用

Linux で大きなファイルを扱う場合、ファイルの先頭または末尾のみを表示する必要があることがあります。このような場合に、 コマンドheadtailコマンドが役立ちます。

ファイルの最初の 20 行を表示するには、次のようにします。

Linux 上の大きなファイルの最初の 20 行を表示します。

同様に、最後の 20 行を表示するには、次を実行します。

どちらの場合も、-n 20最初または最後の 20 行のみを表示することを指定します。この数値を調整して、必要に応じて表示する行数を増やすか減らすことができます。どちらのコマンドもデフォルトで 10 行を表示します。

と を組み合わせるtailと、headファイルの特定のセクションを移動するのに役立ちます。100 行のファイルの 10 行目から 14 行目を表示するには、合計行数から開始行から 1 を引いて、末尾からの開始行を計算します (100 – 9 = 91)。次のコマンドを実行します。

これにより、10 行目から 14 行目が表示されます。 で出力を検証できますless

ログ ファイルなどの継続的に更新されるファイルの場合は、 を使用してtail -f変更をリアルタイムで監視できます。

結論

ログを分析したり、データセットを操作したり、単に大きなテキスト ファイルを読み取ったりする場合でも、これらの戦略はプロセスを大幅に簡素化するのに役立ちます。また、Linux で大きなファイルを見つけてターミナル経由で転送するための追加のテクニックを調べることもできます。

画像クレジット: Unsplash。すべての変更とスクリーンショットはHaroon Javedによるものです。

ソース

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です