Shell

僅限 sh 和 grep 數字

  • March 2, 2017

我面臨一個問題,並試圖找到一個適用於sh的解決方案。如果我可以使用 bash,則此程式碼將起作用:

ls /a|grep ^[0-9]

不幸的是,sh 不是這種情況,是的,我需要使用 sh。:) 執行在我得到

ls /a |grep ^[0-9]
[0-9]: not found
Usage: grep -hblcnsviw pattern file . . .

如果我刪除 ^ 程式碼有效,但我只需要以數字開頭的文件,而不需要包含數字的文件。例如,我需要類似的文件:

12.00.2
2.222.1234.12

從 grep 手冊頁我應該可以使用^.

目前我的實現是通過使用完成的:

ls /a|grep -v [a-z]|grep -v [A-Z]

因為這將刪除所有包含字元的文件,但如果文件是 .123.33,它仍然會顯示出來。

像這樣的東西應該​​適合你:

ls /a | egrep "^[0-9]"

每個@Anthons 回饋egrep已被棄用,因此您可以將其用作普通命令-E的切換:grep

ls /a | grep -E "^[0-9]"

根據@Stephane 的回饋,在這種情況下甚至不需要*擴展正則表達式(ERE)。*真正重要的是引用^[0-9]以保護它不被/bin/sh您使用的任何版本的有問題的解釋。因此,這樣的事情將是解決您的問題的最簡單方法:

ls /a | grep "^[0-9]"

-或者-

ls /a | grep '^[0-9]'

引用自:https://unix.stackexchange.com/questions/78306