LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 856|回复: 9

问一个sed的问题

[复制链接]
发表于 2007-5-10 15:41:11 | 显示全部楼层 |阅读模式
我用:

cat pa.sql    | sed s/\(.*\)$/ssd/g

把pa.sql 里的东西全部变成 ssd,但不可以。用  \(.*\)  来表示选择所有的,怎么不可以呢。。。。。。
发表于 2007-5-10 17:20:37 | 显示全部楼层
cat cm.sql| sed s/^.*$/ssd/g
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-10 19:14:47 | 显示全部楼层
谢了。其实我是想给那些string 加上 单引号 '

比如说:

OCC: CCL, NBR, EQRT RM: B1
OCC: ERL, EQPT RM: B1
Admin: Mtg, Trg RM, SVC & Acc Cdr: B1
ETU, PWY, Computer DATA store: B1
All Passageway, Acc, Escape stair: B1
Automated Storage: B1 & B2
RT, Handover, Stabling Tks: B2
Sig-Com-Radio, Comp & 22kv RM, TPSS: B2 + MZ
Gen Mech, EQPT store, PSD, W7-W10: B2
Insp, Maint Tk, Overhaul, TWP, W1-W6: B2
Test Track: B2
ETU: AUX VEH area + WkShp: B2
ETU: Night store. MSB: B2
Plant: All EQPT, 66kv RM: 1st S
Hzd store, PR Mtg RM, Guard RM, Cdr: 1st S
Canteen and All RMs, Cdr: 2nd S
All RMs, Cdr: 3rd S
All RMs, Cdr: 4th S


变成:

'OCC: CCL, NBR, EQRT RM: B1'                              
'OCC: ERL, EQPT RM: B1'
'Admin: Mtg, Trg RM, SVC & Acc Cdr: B1'
'ETU, PWY, Computer DATA store: B1'
'All Passageway, Acc, Escape stair: B1'
'Automated Storage: B1 & B2'
'RT, Handover, Stabling Tks: B2'
'Sig-Com-Radio, Comp & 22kv RM, TPSS: B2 + MZ'
'Gen Mech, EQPT store, PSD, W7-W10: B2'
'Insp, Maint Tk, Overhaul, TWP, W1-W6: B2'
'Test Track: B2'
'ETU: AUX VEH area + WkShp: B2'
'ETU: Night store. MSB: B2'
'Plant: All EQPT, 66kv RM: 1st S'
'Hzd store, PR Mtg RM, Guard RM, Cdr: 1st S'
'Canteen and All RMs, Cdr: 2nd S'
'All RMs, Cdr: 3rd S'
'All RMs, Cdr: 4th S'

直接用 cat pa.sql | sed s/\(.*\)$/ssd/g   没用办法反引啊。

我是想用:

cat pa.sql | sed s/\(.*\)$/\'\1'\'/g  但是却不行, 不知大大有没有更好的办法啊?
回复 支持 反对

使用道具 举报

发表于 2007-5-10 19:40:41 | 显示全部楼层
try

  1. sed "s/\(.*\)/'\1'/"  urfile
复制代码
回复 支持 反对

使用道具 举报

发表于 2007-5-11 11:29:19 | 显示全部楼层
我觉得用paste就能解决。

创建一个全是'的文件,然后将其paste在urfile的前面和后面,最后把多余的空格去掉就行。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-11 15:20:44 | 显示全部楼层
Post by davi
try

  1. sed "s/\(.*\)/'\1'/"  urfile
复制代码



谢谢楼上的。不过为什么不加双引号就不可以呢?
回复 支持 反对

使用道具 举报

发表于 2007-5-11 15:54:49 | 显示全部楼层
因为 ' 被 bash 解析了
回复 支持 反对

使用道具 举报

发表于 2007-5-12 00:12:40 | 显示全部楼层
Post by 水星
我觉得用paste就能解决。

创建一个全是'的文件,然后将其paste在urfile的前面和后面,最后把多余的空格去掉就行。

想看看兄是怎么实现的。
回复 支持 反对

使用道具 举报

发表于 2007-5-13 16:44:08 | 显示全部楼层
在vi中定义个宏 qa 然后是 ^  i  '  $  a '  q     100@a 就行了.
回复 支持 反对

使用道具 举报

发表于 2007-5-13 18:38:01 | 显示全部楼层
我也想到了一个方法
cat pa.sql | sed  s/^/'/g|sed s/$/'/g
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表