質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

解決済

[テキスト処理] grepで巨大なサイズのファイルを操作すると強制終了してしまう

aufheben
aufheben

総合スコア24

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

3回答

0リアクション

1クリップ

987閲覧

投稿2022/02/20 12:13

https://teratail.com/questions/kvbnxs63kpei19

この質問の操作をしています。この質問のfile1にあたるファイルの行数が5万行で、file2にあたるファイルの行数が28万行でデータの中身も大きいです。(580MB)

この状況で操作した際に、ベストアンサーの

bash

grep -E -f <(sed -E 's/^([0-9]+).*/^\1[ \t]/' file1) file2

のコマンドを使用すると、強制終了と出てきてしまいます。
おそらくファイルサイズが大きすぎるので、5万行と28万行のマッチングをしているときにメモリが足りなくなってしまうんだと思います。
そう思って、とりあえず28万の方を1万行と1000行に分割してそれぞれforループで同様にやってみましたが、それでも多くて強制終了してしまいました。(1万x5万のマッチングを28回、1000x5万のマッチングを280回)

file1の方も分割してみようと思ったのですが、両方分割した際にすべてのマッチングができているか、どうやってマージするか等いろいろ考慮することが多くて混乱してしまいます。

良い方法がありましたらご教授お願いいたします。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。