複数のファイルからパターンを削除する方法

複数のファイルからパターンを削除する方法

次の情報を含むデータファイルがあります。

977.txt:[email protected]
977.txt:[email protected]
980.txt:[email protected]
982.txt:[email protected]
985.txt:[email protected]
987.txt:[email protected]
987.txt:[email protected]
991.txt:[email protected]
991.txt:[email protected]
991.txt:[email protected]
994.txt:[email protected]
995.txt:[email protected]
999.txt:[email protected]

以前にすべてを削除したい:ディレクトリ内のすべてのファイルに対してこれを行う方法(Linux)。

私はこれを試しましたが、うまくいきますが、複数のファイルには使用できません。

grep -o - '[[:alnum:]+\._\-]*@[[:alnum:]+\._\-]*' file.txt

答え1

別のsed解決策。

$ sed -n 's/[^:]*\://p' infile
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
$

-iディレクトリツリーでファイルを内部編集および再帰的に編集するために、そのオプションを使用するように簡単に拡張できます。find

答え2

単一のディレクトリにあるすべてのファイルの先頭を削除するには、次の手順を実行します。

sed -i -r 's/^[0-9]+\.txt://' *

まず、ファイルのコピーをいくつかテストしてみてください。

答え3

関連するファイル数やディレクトリの深さによっては、いくつかのエラーが発生する可能性がありますが、ファイル数が少ない場合は正常に動作します。

 printf '%s\n' 'g/^.*:\(.*\)/s//\1/' w q | ed -s *

関連情報