33GBのファイルがあります。このファイルの最初の列は国コードです(例:AT、BE、CA、DE、DK、GB、IE、ITなど)。私は次のようにawkコマンドを使用しています。
awk -F"|" '$1~/^AT/ {print $0}'
このコマンドはうまく動作します。ただし、awkがファイル全体を読み取るのに約1.5時間かかります。
検索パターンが完了したら、awkコマンドを中断する方法はありますか?
例:AT検索が終了したら、ファイルの残りの部分の検索を停止する必要があります。
作業中のファイルがソートされています。
ベストアンサー1
ファイルの次のコードがわかっている場合
awk '/^BE/ { exit }; /^AT/' file
また、この-F
オプションは隔離されたシナリオでは実際には役に立ちません。目的の特定のタスクであれば、デフォルトの{ print $0 }
タスクを明示的に提供する必要はありません。
これを繰り返し実行する必要がある場合は、単一のスクリプトを使用して元のファイルを一度に区別したいファイル部分を抽出する方が効率的です。全体(または主要部分)を抽出する場合も参照してください。csplit
(すべて抽出した後に不要なファイルを削除しますか?)