見た正規表現の抽出メールアドレスからの/etc/passwd
質問
自分のユーザーのメールアドレスに紐付くプロフィール /etc/passwd
.その5分野にまで掴むものの、それらは異なる場内カンマで区切られたリストの5分野です。
できるかを教えてください regexのものを掴んだのメールアドレス (delimetedカンマ区切)からこのファイルとは何ですか?(まgrepやsedからバスクリプト)
サンプルからファイル:
user1:x:1147:5005:User One,Department,,,email@domain.org:/home/directory:/bin/bash
user2:x:1148:5002:User Two,Department2,email2@gmail.com,:/home/directory:/bin/bash
解決
う:
,([^@]+@[^,:]+)
のグループのメールアドレスです。
[更新に基づくコメントするアドレスな常に終了し、カンマで区切]
他のヒント
実は、このような完璧な仕事Awk.現在のように、ほとんどの人はまっとうな専門家Awk"前に進むと...
awk -F : '{print $5}' /etc/passwd
るのでしょう5分野':'でのフィールドセパレータから/etc/passwdでの5分野ごしていた。
awk -F , '{print $1}'
が、第1の分野の標準入力からwhere','たdelimimterで
awk -F : '{print $5}' /etc/passwd | awk -F , '{print $1}'
が、初のカンマで区切った場(名フィールドからコロン分野(分野のcruftまれています。) に/etc/passwdファイルです。
調整は、エンジンマネージャをエンジン1の分野でメールします。
に違いがないことなく、パイプにAwk.使っていAwkのための分割出分野にもそれ以上ではありません。だくことになるから誰かが大好きという正規表現...
ちなみのフィールドのとして知られるGCOSます。あらつGECOS.
sed -r -e "s/^.*[,:]([^,:]+@[^,:]+).*$/\1/g" /etc/passwd
だという
すべての検索メールでの有効な文字の前後に@ます。のように:
[-A-z0-9.]+@[-A-z0-9.]+
欲張りマッチングはアップまで、スをカンマ区切りで入力または加工します。
チェックする文字で有効なメールアドレスがあります。私もの(+)
sed 's/,*:\/.*//;s/^.*://;s/.*,//' /etc/passwd
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
すべャで最もemials
どのように標準 RFC2822:
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
終.それだけです。:)