我有多個文件,其格式爲XXX XXX XXXX或+ XX XXXXXX XXXX或XXXXXXXXXX。我可以列出包含特定號碼的所有電話號碼嗎? '845'針對每個文件名。列出文件中特定字符串或數字的所有出現:UNIX
目前我使用: -
egrep -H 845 *
我有多個文件,其格式爲XXX XXX XXXX或+ XX XXXXXX XXXX或XXXXXXXXXX。我可以列出包含特定號碼的所有電話號碼嗎? '845'針對每個文件名。列出文件中特定字符串或數字的所有出現:UNIX
目前我使用: -
egrep -H 845 *
這可能會做什麼你想(使用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
如果不是,請編輯你的問題提供一些樣品的輸入和預期的輸出。
完美..謝謝:) – ratednitesh 2015-02-12 09:46:25
你可以試試這個:
awk '/845/ {print FILENAME,FNR,$0}' *
或者這樣:
grep -rF '845' *
這不會給你只能在電話號碼命中,但都與這個nubers一致。
你不知道這是否是數字的中間,開始或結束。
電話號碼隨機放置在文本中。這是一種日誌文件。 – ratednitesh 2015-02-11 07:28:54
有上千行。我只需要專門挖掘號碼。不是整條線。 – ratednitesh 2015-02-11 07:29:48
要列出周邊數週圍的比賽,但沒有別的,
grep -Ho '[0-9]*845[0-9]*' files
如果您的手機號可以包含空格和標點符號,也許那些添加到character classes;但要小心,以免使正則表達式一次匹配兩個相鄰的電話號碼。 (如果他們是通過文本不在字符類總是分開,你的罰款。)
(沒有什麼-E
在這個特殊的正則表達式,所以我沒有使用egrep
。)
這可能會失敗,像'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
提供輸入文件的示例數據。 – anubhava 2015-02-11 07:38:53