2015-02-11 30 views

回答

0

這可能會做什麼你想(使用GNU的單詞分隔符):

$ cat file 
now is the 123 845 1234 winter of +01 238456 5432 
our 1845234567 discontent. 

$ cat tst.awk   
{ 
    while (match($0,/(\<(([0-9]{3}){2}[0-9]{4}|[0-9]{10})|[+][0-9]{2} [0-9]{6} [0-9]{4})\>/)) { 
     tgt = substr($0,RSTART,RLENGTH) 
     $0 = substr($0,RSTART+RLENGTH) 
     if (tgt ~ /845/) { 
      print tgt 
     } 
    } 
} 

$ awk -f tst.awk file 
123 845 1234 
+01 238456 5432 
1845234567 

如果不是,請編輯你的問題提供一些樣品的輸入和預期的輸出。

+1

完美..謝謝:) – ratednitesh 2015-02-12 09:46:25

0

你可以試試這個:

awk '/845/ {print FILENAME,FNR,$0}' * 

或者這樣:

grep -rF '845' * 

這不會給你只能在電話號碼命中,但都與這個nubers一致。
你不知道這是否是數字的中間,開始或結束。

+0

電話號碼隨機放置在文本中。這是一種日誌文件。 – ratednitesh 2015-02-11 07:28:54

+0

有上千行。我只需要專門挖掘號碼。不是整條線。 – ratednitesh 2015-02-11 07:29:48

0

要列出周邊數週圍的比賽,但沒有別的,

grep -Ho '[0-9]*845[0-9]*' files 

如果您的手機號可以包含空格和標點符號,也許那些添加到character classes;但要小心,以免使正則表達式一次匹配兩個相鄰的電話號碼。 (如果他們是通過文本不在字符類總是分開,你的罰款。)

(沒有什麼-E在這個特殊的正則表達式,所以我沒有使用egrep。)

+1

這可能會失敗,像'348 453 1234'或'01 123484 5983'這樣的數字都有'845',但它們之間有空格。這可能會'grep -Ho'[0-9] * 8 * 4 * 5 [0-9] *',但是如果你有號碼爲'348 123 1458 4598 east street'的話,我會提出問題。 – Jotne 2015-02-11 07:44:13

相關問題