LinuxSir.cn,穿越时空的Linuxsir!

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

格式转换shell的问题?(tcsh)

[复制链接]
发表于 2003-6-12 16:23:17 | 显示全部楼层 |阅读模式
我现在有一个list文件,内容是
1TRF
2PNI
2PDE
1EGR
1ATX
1EPS
1ERG
1PNH
1EFM
1POU
2AT2
1ERP
1BAL
1HPB
2CBH
1SIS
1GAT
7I1B
1CDB
4TRX
1CIS
1TPM
1TFI
2CRD
1HCC
现在想把每一行都变成pdb+上面每一行内容+.Z
例如本来是 1HCC的变成pdb1HCC.Z,这个shell该怎么写啊?
发表于 2003-6-12 16:34:00 | 显示全部楼层
sed 's/\(.*\)/pdb\1.Z/g' list
发表于 2003-6-12 16:40:29 | 显示全部楼层
under command,use:
$for i in $(cat list);do echo "pdb$i.Z";done>tmp;rm list;mv tmp list
 楼主| 发表于 2003-6-12 16:53:57 | 显示全部楼层

多谢

多谢
 楼主| 发表于 2003-6-12 17:21:31 | 显示全部楼层

好象还有问题

第一种只能显示,可我要保存到文件,第二种运行报错
 楼主| 发表于 2003-6-12 17:25:05 | 显示全部楼层

搞定了

搞定了,原来重定向>前后要加空格,多谢两位
发表于 2003-6-16 22:36:49 | 显示全部楼层
作下注解:
sed 's/\(.*\)/pdb\1.Z/g' list

.*               匹配任意子窜
\(任意字符窜\)   这里是做一个标记mark,然后在后面可以按标记的顺序用\1,\2,\3来表示,\(表示标记开始,\)表示标记结束

s                表示执行替换命令

其他的不用说了吧

另外sed本身不会修改文件(绝对不会修改),要保存结果必须重定向到一个文件中去,即在后面加 > filename
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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