1

基本的なプロセスに従う大きなCSVを使用しています。

  1. 作業中のオリジナルをバックアップする
  2. スケルトンCSVを生成する
  3. 別のCSVから読み取り、コンテンツをフォーマットしてから、スケルトンに追加します
  4. バックアップから新しいデータにデータを追加します。

私が直面している問題は、バックアップからコンテンツを読み込むときに、grep -Ev -f正規表現を含むファイルを使用して、バックアップから不要なデータを除外し、次のリビジョンに含めることです。grepは、ファイル内の各正規表現をSTDINのすべての行に対して評価しているように見えるため、これは現在問題を引き起こしています。これにより、重複が発生します。簡単な解決策は、それをパイプでsort | uniqつなぎ、1日と呼ぶことですが、それは現在使用されているcsvのフォーマットに失敗します。必要に応じて詳しく説明できますが、IPアドレスを一括処理するスクリプトを実行しますが、他の人がファイルを手動で編集することもできます。現在のスクリプト形式では、最終的な出力はすべて自動化されたコンテンツになります。ファイルの下部に手動エントリがあります。

それで、パターンが一致した後に行の評価を停止するように指示するgrepの醜いループがないのはとにかくありますか?を使用-m 1すると、ストリーム全体の最初の一致後にgrepが停止し、新しい行ごとに停止する必要があります。

4

1 に答える 1

0

達成したいタスクのために。私の意見では、AWKを使用するのが最善です。http://www.grymoire.com/Unix/Awk.htmlで AWK の優れたチュートリアルを見つけることができます。基本的に awk の入力フィールドセパレーターを変更する必要があります

awk -f',' foo.awk bar.dat

ソートの問題に関する限り、これに従ってください:http://www.linuxquestions.org/questions/linux-general-1/how-to-use-awk-to-sort-243177/

于 2012-10-27T22:33:35.497 に答える