在bash中尋找解決方案(將成爲更大腳本的一部分)。在bash中提取所有匹配的子字符串
給出一個包含表單的信息
diff -r efb93662e8a7 -r 53784895c0f7 diff.txt --- diff.txt Fri Jan 23 14:48:30 2009 +0000 +++ b/diff.txt Fri Jan 23 14:49:58 2009 +0000 @@ -1,9 +0,0 @@ -diff -r 9741ec300459 myfile.c ---- myfile.c Thu Aug 21 18:22:17 2008 +0000 -+++ b/myfile.c Thu Aug 21 18:22:17 2008 +0000 [email protected]@ -1,4 +1,4 @@ - int myfunc() - { -- return 1; -+ return 10; - }
我希望提取兩(這裏diff.txt和myfile.c文件,但未來的情況下,將不侷限於這個數)的文件名的字符串變量表單「編輯:文件名1文件名2 ...文件名N」。
爲了澄清,我希望提取多個匹配的文件名到一個字符串。
- 命令「$(expr」$ editing「:'。* --- [[:space:]] \([[:graph:]] * \)[[:space:]]' )「正確返回最後的文件名,但不是先前的實例。
編輯:需要能夠識別編輯過的文件名(可能包括空格),即出現在「---」之後和「星期五/星期四...」之前的文件名。
感謝您的幫助(以及許多人迄今已回覆)。
它可能用grep的組合,sed的處理和awkm這將涉及到文件的創建/刪除,我很希望避免。感謝您的意見。 – anon 2009-01-23 18:57:08
我不得不同意,換行會讓這個更乾淨。 (順便說一句,Bash變量可以包含換行符) – 2009-01-23 18:58:43