2017-06-16 30 views
0

之間我必須有行的文件下面的內容sed的 - 如何用一個詞取代具體的後圖案的圖案

name : 'last1, first1', phone : '1111111111', email :'[email protected]', name: 'last2,first2', phone : '2222222222', email: '[email protected]',name: 'last3,first3', phone : '3333333333', email:'[email protected] 

必須更換這樣。

last name : 'last1', first name : 'first1', phone : '1111111111', email :'[email protected]', last name: 'last2', first name : 'first2', phone : '2222222222', email: '[email protected]',last name: 'last3, first name: 'first3', phone : '3333333333', email:'[email protected] 

有很多問題圍繞SED替代,但找不到任何反應解決這一個。如果有的話,給我提供鏈接。

回答

0

呼應你的串入sed與以下正則表達式:

sed -e "s_name : '\([a-zA-Z 0-9]*\),\([a-zA-Z 0-9]*\)',\(.*\)_last name : '\1', first name '\2', \3_" 

給出了這樣的結果。

last name : 'last1', first name ' first1', phone : '1111111111', email :'[email protected]', name: 'last2,first2', phone : '2222222222', email: '[email protected]',name: 'last3,first3', phone : '3333333333', email:'[email protected] 

編輯

有在你輸入的不一致:中name一審隨後一個空格和冒號,而其他情況下,只用了冒號,不佔空間。這裏的更新版本,需要的是考慮:

sed -e "s_name *: '\([a-zA-Z 0-9]*\),\([a-zA-Z 0-9]*\)',_last name: '\1', first name: '\2', _g" 

給出:

last name: 'last1', first name: ' first1', phone : '1111111111', email :'[email protected]', last name: 'last2', first name" 'first2', phone : '2222222222', email: '[email protected]',last name: 'last3', first name: 'first3', phone : '3333333333', email:'[email protected] 
+0

只有名字第一次出現在這裏更換。 – SLePort

+0

該命令無法取代所有名稱的出現。只有第一次更新。 – sree

+0

我沒有意識到有很多事件 - 我會更新 –