2014-02-27 86 views
0

在Linux/Unix系統上,您有一個充滿文件的目錄。您想識別其中有電話號碼的文件,您可以假設電話號碼看起來像xxx-xxx-xxxx。您可以使用哪些標準的Unix工具來解決您的問題?Unix查詢---查找數字

我可以使用egrep '[0-9]+-[0-9]+-[0-9]+' *

有什麼辦法,我可以使用find命令來解決這個或其他任何命令來解決這個問題?

+2

有什麼問題你寫的是什麼?如果您只想獲取文件名,並且沒有看到所有匹配的行,請使用'-l'選項來指定'egrep'。 – Barmar

回答

0

ls | egrep '[0-9]{3}-[0-9]{3}-[0-9]{4}'有什麼問題?除非你想要一些複雜的後處理,否則你不需要find來選擇一個平面目錄。

如果要檢查文件的內容,請使用egrep '[0-9]{3}-[0-9]{3}-[0-9]{4}' *

+0

我認爲他正在尋找文件內容中的電話號碼,而不是文件名。 – Barmar

+0

@Barmar有道理。應該更加開放...... – collapsar

0
ls -1 | perl -lne 'print if(/^[\d]{3}-\d{3}-\d{4}$/)' 

以下測試:

> touch 903-745-39913 
> touch 903-745-3991 
> ls -1 | perl -lne 'print if(/^[\d]{3}-\d{3}-\d{4}$/)' 
903-745-3991 
> 

你的問題是不太clear.If你的意思電話號碼都存在裏面的文件。 然後,

ls| xargs perl -lne 'print if(/\b[\d]{3}-\d{3}-\d{4}\b/)' 

將服務器的目的。

+0

如果我理解這個問題,電話號碼在文件內容中 - 而不是在文件名中。 – pitseeker

+0

@pitseeker。更新了答案。 – Vijay

0

用sed

sed -n '/^[0-9]\{3\}-[0-9]\{3\}-[0-9]\{4\}/p' phonelist.txt