2015-05-08 48 views
0

我不知道为什么我有一个困难时期这一点,我有这样的SQL文件:桑达通配符代替

insert into table_name values ('Danny:2:1429543183', 195621, 'My Stuff', '', 'Fake', '', '', 0, 1429553870, 1429543183, 1429543183, 1429543183, 0, 1, 1, 0, 0, '', 0, 0, 0, 0, '', 0, 0, 0, '', '', 0, 0, '', 0, '', 0, 0, '', 0, 0, '', '', '', '', '', '', '', '', '', 0, 0, '', '', 'P', 195621, '', '', 0, 0, '', 0, 1429543183, 0, '', '', 0, '', '', 0, 0, '', '', 1); 

我想改变这种142*开始一个新值每一件事情。

sed 's:\(142.*).*\,/\1 93284209348\g' /tmp/1 --> Nope 
sed "s/[, 142*,]/ 93284209348,/"g /tmp/1 --> Changes everything to 93284209348 

我觉得我越来越头疼:)

+1

你能上都能跟得上扩张?什么都没有发生? –

+0

'*以'142 *'*'开头并以...结尾? – Biffen

+0

'sed's/\:142 [0-9] \ {1,\} /:93284209348/g'/ tmp/1' – economy

回答

1

这应该这样做:

sed 's/\([ :]\)142[0-9]*/\193284209348/g' file 
insert into table_name values ('Danny:2:93284209348', 195621, 'My Stuff', '', 'Fake', '', '', 0, 93284209348, 93284209348, 93284209348, 93284209348, 0, 1, 1, 0, 0, '', 0, 0, 0, 0, '', 0, 0, 0, '', '', 0, 0, '', 0, '', 0, 0, '', 0, 0, '', '', '', '', '', '', '', '', '', 0, 0, '', '', 'P', 195621, '', '', 0, 0, '', 0, 93284209348, 0, '', '', 0, '', '', 0, 0, '', '', 1); 

编辑:固定的,这样第一个数字有正确的开始:和其他用途的空间。

+0

非常感谢! – user1628063

0

这可能为你工作(GNU SED):

sed 's/\<142[0-9]*/93284209348/g' file