人はどのように可能ですか?指定した文字列のディレクトリ内のファイルの最初の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