我需要用sed
做一件非常簡單的事情:我需要從這個字符串HEAD detached at 19d7ea9
中獲取提交散列。爲什麼sed正則表達式替換不起作用?
這是我在它試圖用sed
echo "HEAD detached at 19d7ea9" | sed 's/HEAD\ detached\ at\ \(.\+\)/\1/'
然而,該命令是行不通的,而我不能完全弄清楚爲什麼。我知道我可以做到與sed 's/HEAD\ detached\ at//
不同,並有相同的結果。但我似乎無法弄清楚爲什麼第一種方法不起作用。
任何答案將不勝感激。這是我第一次使用sed
(我知道我遲到了派對),所以請不要錯過。
編輯:感謝所有的答案。這似乎是使用-E
標誌是解決這個問題最直接的方法。
我試圖按照@ ooga的答案與另一個例子,但也失敗了。再次,我無法弄清楚我在做什麼錯在這裏:
例2: 我想看看回購是遠在前面還是後面,以及多少次提交。這是我的代碼
status="On branch master Your branch is ahead of 'origin/master' by 1 commit. (use "git push" to publish your local commits) Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to..."
echo $status | sed -E 's/Your branch is (ahead|behind).+([0-9]+) comm)/\2 \1/'
有關此主題的任何進一步的幫助表示讚賞。我想知道爲什麼我無法得到這整個sed
業務的權利。
試試這個:'sed的 '(。* \)S/HEAD在\分離/ \ 1 /'' – anubhava
你爲什麼要逃離空間? –
你知道你使用的是什麼版本的sed嗎? –