Shell
僅限 sh 和 grep 數字
我面臨一個問題,並試圖找到一個適用於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]'