我想從/home/user1/subdir/foo_1/foo_2/.../foo_n
這樣的路徑中使用bash腳本提取子目錄名稱。 subdir
將永遠駐留/home/user1
下,因此前綴是不變的,但有可能在subdir
從路徑中提取子目錄的名稱
一些例子是子目錄的變化數量:
/家庭/用戶1/DIR1 /事/像/這樣的:RESULT :DIR1
/家庭/用戶1/DIR2 /不同的/這/時間/:結果:DIR2
- /家庭/用戶1/DIR3 /這/是/的/最後/例如:結果:DIR3
我寫這個正則表達式,但它不能正常工作:
expr /home/user1/subdir/foo_1/foo_2 : '\/home\/user1\/\(.*\/\)\{1\}'
,但它似乎給subdir/foo_1
而不是subdir
。
謝謝!
爲什麼'。* \ /'匹配多個斜槓?我添加了「{1}」發佈該表達式。你的解決方案是有效的,但我無法理解爲什麼我的正則表達式失敗。謝謝@Anson – ajmartin
'。*'將始終匹配儘可能多的字符(貪婪匹配)。它將匹配任何和所有字符,包括斜槓。所以在字符串'subdir/foo_1/foo_2'中,'。* /'將匹配'subdir/foo_1 /'。你的'{1}'修飾符對'。*'匹配的效果沒有影響。 '{n}'只是表示在前面的表達式中匹配的任何內容都應重複n次。事實上,我剛纔所說的「{1}」修飾符在這裏是不必要的;我編輯了我的答案並將其刪除。 – Anson