0

電子メール アドレスを含まないすべての行 (カンマ区切りファイル) を除外する必要がある巨大なファイルがあります (@ 文字で判断します)。

今私が持っているのは、@記号を含むすべての行を見つけることです:

.*,.*,.*@.*,.*$

基本的に 4 つの値があり、3 番目の値には電子メール アドレスがあります。

replace with: 値は空になります。

4

2 に答える 2

4

TextMateでこれを行うには、約10の異なる方法があり、コマンドラインからさらに多くの方法があります。ここにいくつかの簡単な方法があります...

TextMateから:

  1. Command-control-t、「一致しない行を新しいドキュメントにコピーする」コマンドの一部の入力を開始し、パターンに@(他には何もありません)を使用します。
  2. 上記と同じですが、探しているコマンドが「ドキュメントの抽出/選択」である点が異なります。
  3. @記号を見つけて選択します。次に、上記と同じように実行しますが、コマンド「Strip Lines MatchingSelection/Clipboard」を検索します。私がこれを自分で開発したかもしれないので、あなたはそれを持っていないかもしれません。

コマンドラインから:

次のコマンドのいずれかを入力し、FILEをファイル名に置き換えます。現在の作業ディレクトリにない場合は、ファイルパスを含めます。フィルタリングされたコンテンツは、FILE-newにあります。

  1. egrepの使用: egrep -v '@' FILE > FILE-new
  2. sedの使用: cat FILE | sed -e "/@/D" > FILE-new

上記の両方について、を使用diffして、達成したことを確認します。diff FILE{,-new}

おそらくそうなるはずです、私は推測しています...

于 2012-10-30T06:35:53.537 に答える
1

^[^@]*$何も置き換えてみてください。または、grep正規表現を含むファイルを作成し、結果を新しいファイルにリダイレクトします。

于 2012-10-21T23:04:43.093 に答える