Regular-Expression
特別是小寫的電子郵件地址
範例(隨機)文本:
StackOverflow@icloud.com:Portuguesa-Span103 StackOverflow@gmail.com-Snip1031 Stackoverflow@icloud.com:Sanchismo103
期望的輸出:
stackoverflow@icloud.com:Portuguesa-Span103 stackoverflow@gmail.com-Snip1031 stackoverflow@icloud.com:Sanchismo103
通常這是我傾向於使用的電子郵件地址正則表達式,
[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}
我希望該命令查找所有電子郵件地址並簡單地將它們小寫,而不管每一行的格式如何。同時仍保持該行其餘部分的正常大小寫(除了電子郵件地址之外沒有其他任何內容髮生更改)。
我首選使用的工具是 bash(和相關工具),我自己目前還沒有嘗試過這樣做,因為我不知道從哪裡開始。
我正在使用 Gnu/Cygwin。
當您使用 GNU sed 時,您可以使用:
sed -e 's/^\([^@]*\)@/\L\1@/' file
這會將從行首
@
到第一個的所有內容轉換為小寫。例如$ sed -e 's/^\([^@]*\)@/\L\1@/' input.txt stackoverflow@icloud.com:Portuguesa-Span103 stackoverflow@gmail.com-Snip1031 stackoverflow@icloud.com:Sanchismo103
如果電子郵件地址不在每行的開頭,和/或如果一行上可能有多個電子郵件地址,您將使用
\b
而不是^
將搜尋和替換錨定到單詞邊界標記而不是開頭線:sed -e 's/\b\([^@]*\)@/\L\1@/g' input.txt