2013-11-28 90 views
-1

我需要幫助。我有一個包含很多信息的文本文件,包括名稱,路線和電話,但我只需要將手機放在文件上。這是這樣的:刪除除txt文件以外的所有數字

Stephanie D. Ferebee 
Rua Inácio de Andrade, 128 
 (41) 5123313 
James M. Tidwell 
Rua Oitenta e Quatro, 1698 
 (43) 2571815 
Sherry M. Rossman 
Rua Fernandes Vieira, 218 
 (41) 2931075 

我怎樣才能只保留在文件上的數字?他們都像:「(XX)XXXXXXX」(包括開始時的空間)。

+3

你因此未提及的編程語言 –

+0

所以總結起來:用戶是在Mac上,並希望搜索和通過終端更換= grep答案適用。或TextWrangler(手冊:http://ash.barebones.com/TextWrangler_User_Manual.pdf(p114))。 – achedeuzot

回答

1

假設所有的電話號碼與(digit開始,你可以按如下方式使用grep命令:

$ grep "^ ([0-9]" file 
(41) 5123313 
(43) 2571815 
(41) 2931075 
0

如果你只想爲手機NUMER使用這一個正則表達式:

PATTERN

\(\d{2}\) \d{7} 

這將只捕獲您提供的格式的數字:

(XX) XXXXXXX 
+0

現在我只需要刪除不包含模式的所有行:(我怎樣才能做到這點? – user3044979

+0

@ user3044979什麼語言? – Tafari

+0

這只是純文本,我使用的是Rubular。com在線正則表達式編輯器與模式,它評論我提供的格式的所有數字,但我不知道如何刪除不包含它的行。 – user3044979

0

如果您在Windows上,則可以使用PowerShell。

Get-Content C:\test.txt | Select-String "\(\d{2}\) \d{7}" 

您需要根據您的文本文件更改路徑(此處爲C:\test.txt)。

+0

我正在使用Mac。我可以使用終端嗎? – user3044979

+0

不,Mac OS X不支持PowerShell。但是你可以使用這裏發佈的各種grep命令,它們應該可以工作。請在下次問題中指定您的操作系統。 – mnme

0

因此,使用和的TextWrangler搜索和替換功能,您可以使用下面的正則表達式查找的數字:

(\d{2}) \d{7} 

但是,這不會幫助你,讓你只需要什麼。要選擇一個特定的組,並刪除其餘,你可以做到以下幾點:

:本()字符用於捕捉組,所以你可以嘗試以下方法:

查找:

/((.*)(\(\d{2}\) \d{7})(.*)|(.*))/g 

替換:

$3 

$3意味着您將只保留第三個匹配組,即(\d{2}) \d{7}

附加說明,如果您的數字之間出現空行,則可以開始第二次搜索並替換並搜索模式^\r。換成什麼也沒有,並且voila

或者你可以將其合併成一個單一的正則表達式(在搜索字段):/((.*)(\(\d{2}\) \d{7})(.*)|(.(\r|\n)*))/g

+0

我不明白。我用\(\ d {2} \)\ d {7}找到了所有的數字,但是我必須做的是什麼? :( – user3044979

+0

使用提供的完整表達式:'/((。*)(\(\ d {2} \)\ d {7})(。*)|(。*))/ g'不僅' \ d {2})\ d {7}'(只能說它找到了一些東西但不能替換)。在替換字段中,必須放置:'$ 3'來選擇搜索所需的內容。 – achedeuzot

+0

它表示「The pattern」/((。*)(\(\ d {2} \)\ d {7})(。*)|(。*))/ g「沒有找到。」 ((。*)(\(\ d {2} \)\ d {7})(。*)|(。(\ r | \ n)*))可能會嘗試不帶標記: – user3044979

相關問題