簡體   English   中英

sed或awk提取整個文件中的電話號碼

[英]Sed or awk extract phone number in whole file

我正在解析電子郵件中的SMS號碼,但遇到一個問題。 我正在使用awk並在bash腳本中使用sed。 電話號碼的格式為SMS: +XXX XXX XXX XXX 當電子郵件正文中包含此字符串時,我需要發送帶有主題的SMS。 到目前為止,一切工作正常,但是當一行或某個Web鏈接后存在多個字符串時,我遇到了問題。 目前,我正在使用它來將電話號碼解析為數組,然后創建名稱為數字的文件。

phone=( $( awk /SMS/ $FILE | awk '{ gsub (" ", "", $0); print}' ) )

當在單獨的行上有SMS字符串時,效果很好。 當一行上有更多字符串時,我需要用同樣的方法來解析字符串: SMS: +123 456 789 123 SMS: +456 789 123 456http://somelink/to/some/web/page.html SMS: +123 456 789 123基本上,最好是分析整個文件並在SMS:之后找到任何內容,格式為+XXX XXX XXX XXX 另外,不確定最后一位數字之后是否會出現換行符-因此它可能在2個單獨的字符串之間。 感謝幫助。

grep -o將使您的生活更輕松:

grep -oE 'SMS: \+([[:digit:]]{3} ?){4}' "$file"

不管輸入中的同一行有多少匹配,這都會在單獨的一行上吐出每個匹配項。

另外,請擺脫使用ALL_CAPS_VARNAMES的習慣。 有一天,您會不小心使用PATH=... ,然后想知道為什么腳本損壞了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM