1

私は現在、多数の電子メールアドレスに電子メールを送信する必要があるプロジェクトに取り組んでいます。そのため、私は、電子メールなどを制限するサービスプロバイダーに関する「一時的な」不具合を回避しようとしています。

私の計画は、電子メールアドレスの最初のリストを取得し、それをより小さな(切り刻まれた)リストに切り刻んで、それらをずらしてスケジュールできるようにすることです。電子メールの送信は機密性が高いため、切り刻まれたリストのいずれにも重複する電子メールアドレスが存在しないようにしたいと思います。bashを介してこれを行う方法はありますか?

ちなみに、リストを構成するために使用されるクエリの性質により、マスターリスト内のすべてのメールアドレスが一意であると100%確信しています。マスターリストを切り刻んだスクリプトには、切り刻まれたリスト全体で重複する電子メールアドレスを作成する欠陥。

4

3 に答える 3

2

試す

 cat *.txt | sort | sort -u -c

ファイル名が.txtで終わっていると仮定します。最初のsortコマンドは、すべての電子メールアドレスを注文します。2番目のsortコマンドは、2つの連続する行が等しくないことを確認し、それ以外の場合はエラーをスローします。

于 2012-06-26T20:56:59.013 に答える
2

切り刻んだファイルをcatを介して(一時的に)まとめ、sort --uniqueを使用して重複を削除し、結果に元のファイルと同じ数の行があるかどうかを確認できます。

cat original_list | wc -l

cat list_part* | sort --unique | wc -l

結果が同じである場合、重複はありません。

于 2012-06-26T20:59:44.210 に答える
1

問題

一意のアドレスを並べ替えてから、順序付きリストをチャンクに分割する必要があります。

ソリューション

次の仮定が与えられます:

  1. メールはemails_xxxx.txtというファイルに保存されます。(注:好きな名前を付けることができますが、グロブしやすいファイル名の賢明なセットを使用すると、作業が簡単になります。)
  2. 各行は1つのアドレスを保持します。

短いパイプラインでこれを処理できます。Sortはglobパターンまたは複数のファイル引数( xargsなど)を受け入れるため、「catの無駄な使用」を回避できます。次に、出力をsplitにパイプします。ここで、チャンクのさまざまな側面を制御できます。例えば:

sort --unique emails_*.txt |
split --numeric-suffixes \
      --lines=200 \ 
      --suffix-length=4 \
      --verbose

これにより、ソート/フィルタリングされた行がそれぞれ最大200行のチャンクに分割され、バッチ処理に適した数値拡張子を使用して各チャンクに名前が付けられます。要件に合わせて、行と接尾辞の長さを調整できます。

サンプル出力

creating file `x0000'
creating file `x0001'
于 2012-06-26T21:22:14.187 に答える