我不确定为什么我很难用这个,我有这个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
我觉得我很头疼:)
答案 0 :(得分: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);
编辑:已修复,以便第一个数字具有正确的开始:
,其他使用空格。
答案 1 :(得分:0)
这可能适合你(GNU sed):
sed 's/\<142[0-9]*/93284209348/g' file