替换行中的第一个匹配项

时间:2014-07-11 16:03:49

标签: sql regex bash sed

我试图找出如何通过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值,因为我将使用此数据集并将其导入表中(可能与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].*,)。

1 个答案:

答案 0 :(得分: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),