ファイルの最初の50行のパターンをGrepします。

ファイルの最初の50行のパターンをGrepします。

人はどのように可能ですか?指定した文字列のディレクトリ内のファイルの最初の50行を検索します。?私は具体的にどのデータベーステーブルファイル(mysqldumpで)に特定のフィールドが定義されているかを探していますが、ファイル全体をgrepし、CREATE TABLEの20〜40行目以降に何百ものINSERT文を実行したくありません。

私はできます。Pythonスクリプトの作成各ファイルの最初の数行を繰り返しますが、経験的にはPythonは強力ですが遅いです。確認する必要がある*.sqlファイルが200個を超えるが、今後一般化できるソリューションを学びたいと思います。

ベストアンサー1

awk(家庭あなたの実装はこのnextfile声明を支持します)これは素晴らしいことです。

awk 'FNR > 50 { nextfile }; /foobar/ { print FILENAME ": " $0 }' ./*.sql

50レコードが処理されると、最初のステートメントは次のファイルに移動します。 2番目のステートメントはファイル名を印刷しますfoobar

awkこのバリエーションがなければ動作しますnextfileが、効率は低下しそうです。

awk 'FNR <= 50 && /foobar/ { print FILENAME ": " $0 }' ./*.sql

おすすめ記事