2017-03-22 10 views
-1

ファイルからすべての行/行番号を検索しようとしていますが、行の列数は25です(ファイルはpipe (|)で区切られています。理想的なシナリオは、各行に25列が存在すべきであると私は25Unixシェル - 非常に大きなファイルから列の数を見つけよう

より(以下であってもよい)、実際に、より私は以下のコマンドを使用する

cat filename|awk -F"|" 'NF != 25 {print NR}' > outputfile 

を試みた行番号を検索します主な関心事は、ソースファイルが400 GBであるため、コマンドが2時間以上長く実行されていて、完了していないことです。

同じことをすばやく達成することができる他の方法はありますか。

+1

ファイルを小さなファイル(1GBの400ファイル)に分割し、各ファイルで 'awk'を実行する方が良いかもしれません。 – anubhava

+0

簡潔でテスト可能なサンプル入力と予想される出力を含めるように質問します。 See [ask]。あなたのサンプルは、25の列を持つ必要はありません - それを行う必要がある4行から6列の5行。 –

答えて

1

あなたは下のEdMortonの答え@見た場合には:) catの無駄な使用を除き、列番号ではなく、列数を探している場合、私は(元のコマンドと間違って何も表示されません。

$ time awk -F\| 'NF != 25 {print NR}' my_350_gb_file > /dev/null 

real 0m13.685s 
user 0m13.512s 
sys  0m0.172s 

これらの行番号を画面に印刷している場合は、時間がかかることがあります。

関連する問題