在sed

2015-11-23 14 views
1

使用符號我有一個CSV文件完全一樣線以下:在sed

Aity Chel Jenni,Hendaland 229,2591 TE Amsterdam 

我想在一個自動批處理腳本,改變了信息的這種格式化成的創造一個sed模式以下格式:

Aity Chel Jenni,Hendaland 30,2591 TE, Amsterdam 

有了一些研究,我發現,我不得不創建一個正則表達式,然後用符號(&)字符將它改變,周圍用&定義的位置的事情正則表達式。

我曾嘗試以下:

sed 's/([1-9] [A-Z]{2}/&,/' file1 >file2 

而且一直在努力的變體試圖讓正則表達式下來,但它似乎並沒有改變任何東西。

我在使用&符號時出錯,或者是我的正則表達式錯誤? 通過互聯網閱讀我似乎無法繞過這個功能,有人可以給我任何例子/向我解釋如何正確地做到這一點?

回答

2

你是說

sed 's/([1-9] [A-Z]{2}/&,/' file1 >file2 
    ^

但你沒有與()捕捉使用&。相反,只是說:

sed 's/[1-9] [A-Z]\{2\}/&,/' file 

注意你一定要逃逸的{ }量詞的元素,除非你使用-r

sed -r 's/[1-9] [A-Z]{2}/&,/' file 
1

嘗試以下操作:

sed -r 's:[0-9] [A-Z]{2}\b:&,:' file > out 

關於你自己模式,你錯過了右括號。而且,iirc,你需要在sed模式中逃脫(以不符合他們的字面意思。

-r選項啓用sed使用擴展正則表達式,它提供了{2}擴展。