2014-07-11 53 views
0

我試圖找出如何通過sed來替換第一個匹配項(搜索/替換)的匹配項。我想要它逐行(我認爲這是sed的默認值)。替換行中的第一個匹配項

這裏是我的數據集:

(4320, 38, '101.1.168.192.in-addr.arpa', 'PTR', 'test1.example.com', 3600, NULL, 1377614683), 
(4321, 38, '102.1.168.192.in-addr.arpa', 'PTR', 'test2.example.com', 3600, NULL, 1377614683), 
(4322, 38, '103.1.168.192.in-addr.arpa', 'PTR', 'test3.example.com', 3600, NULL, 1377614683), 
(4323, 38, '104.1.168.192.in-addr.arpa', 'PTR', 'test4.example.com', 3600, NULL, 1377614683), 

這僅僅是一個剪斷–這是一個巨大的名單。我想爲每一行取出第一個數字,具體查找([0-9],(,。這樣我就可以默認分配這個SQL語句的值,因爲我將把這個數據集導入到一個表中(這可能與auto_increment值有衝突)。

下面是我想它看起來做的時候像:

(, 38, '101.1.168.192.in-addr.arpa', 'PTR', 'test1.example.com', 3600, NULL, 1377614683), 
(, 38, '102.1.168.192.in-addr.arpa', 'PTR', 'test2.example.com', 3600, NULL, 1377614683), 
(, 38, '103.1.168.192.in-addr.arpa', 'PTR', 'test3.example.com', 3600, NULL, 1377614683), 
(, 38, '104.1.168.192.in-addr.arpa', 'PTR', 'test4.example.com', 3600, NULL, 1377614683) 

我相信會的工作。我已經嘗試了一些sed命令,但它們似乎都將整個比賽都刪除直到線的末端(因爲我匹配我匹配的內容,它基本上刪除了每個[0-9].*,)。

+3

請發表你的命令,你試過 – Teja

回答

3

你可以試試下面的GNU sed的命令,

$ sed -r 's/^\([0-9]+/(/' file 
(, 38, '101.1.168.192.in-addr.arpa', 'PTR', 'test1.example.com', 3600, NULL, 1377614683), 
(, 38, '102.1.168.192.in-addr.arpa', 'PTR', 'test2.example.com', 3600, NULL, 1377614683), 
(, 38, '103.1.168.192.in-addr.arpa', 'PTR', 'test3.example.com', 3600, NULL, 1377614683), 
(, 38, '104.1.168.192.in-addr.arpa', 'PTR', 'test4.example.com', 3600, NULL, 1377614683), 
+0

我想說結束'g'無關這裏做,即使它不應該打破命令。 – Qeole

+0

@Qeole yep,糾正.. –

+0

這很好。謝謝你。我結束了使用這個,然後補充地用於不同的形式來改變我知道我需要在數據庫中引用的當前特定數字。這使我能夠以很少的執行時間導入大約400條SQL條目。真的很感激它。 – drewrockshard

相關問題