2014-07-11 2 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 по умолчанию, так как я буду брать этот набор данных и импортировать его в таблицу (которая может иметь конфликты с значениями 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

Смежные вопросы