例(任意)テキスト:
[email protected]:Portuguesa-Span103
[email protected]
[email protected]:Sanchismo103
希望の出力:
[email protected]:Portuguesa-Span103
[email protected]
[email protected]:Sanchismo103
通常、これは私が使用する電子メールアドレスの正規表現です。
[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}
各行の形式に関係なく、すべての電子メールアドレスを見つけて、単に小文字にするコマンドが必要です。残りの行はまだ大文字のままです(メールアドレス以外は何も変更されていません)。
これを使用するために私が好むツールはbash(および関連ツール)です。どこから始めるべきか分からないので、まだ自分で試してみません。
私はGnu/Cygwinを使っています。
答え1
GNU sedでは、次のことができます。
sed -e 's/^\([^@]*\)@/\L\1@/' file
これにより、行の先頭から最初の行@
まで、すべての内容が小文字に変換されます。例えば
$ sed -e 's/^\([^@]*\)@/\L\1@/' input.txt
[email protected]:Portuguesa-Span103
[email protected]
[email protected]:Sanchismo103
電子メールアドレスが各行の先頭にない場合、または1行に複数の電子メールアドレスがある可能性がある場合は、代わりに\b
検索^
を固定して開始行の代わりに単語境界タグに置き換えることができます。
sed -e 's/\b\([^@]*\)@/\L\1@/g' input.txt
答え2
使用する正規表現が常に正しい場合は、Perlで使用できます。
% perl -pe 's/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}/\L$&/' foo
[email protected]:Portuguesa-Span103
[email protected]
[email protected]:Sanchismo103
$&
一致し、その後のすべての項目を小文字にするテキストです\L
(最大a\E
ですが、ここでは必要ありません)。