免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1120 | 回复: 3
打印 上一主题 下一主题

求助shell 文本处理 ! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-11-01 18:20 |只看该作者 |倒序浏览
我有如下格式的文本文件:

(cpId = 84,AbsPos = 229, omu, boardNum = 0, act.= Pas., FtState =   Passive  , OBR [Oc: 0 Rk: 1]),
(cpId = 66,AbsPos = 233, omu, boardNum = 1, act.= Act., FtState =   Active   , FT/LB [Oc: 0 Rk: 2]),
(cpId = 68,AbsPos = 233, omu, boardNum = 1, act.= Act., FtState =   Active   , SupCN [Oc: 0 Rk: 2]),
(cpId = 16,AbsPos = 193, tmu, boardNum = 0, act.= Act., FtState =   Active   , SS7 [Oc: 0 Rk: 1]),
(cpId = 17,AbsPos = 195, tmu, boardNum = 1, act.= Act., FtState =   Active   , TCUe3 [Oc: 0 Rk: 1]),

我想处理成下列格式,
(cpId = 84,XXXXXXXXXX, omu, boardNum = 0, act.= Pas., FtState =   Passive  , OBR [Oc: 0 Rk: 1]),

其中XXXXXXXX 为与AbsPos = ???相关的字符串。我有两个想法
1.建立一个文件
AbsPos = 225;XXXXXXXXXXXXXXX
AbsPos = 227;YYYYYYYYYYYYYYYYY
AbsPos = 228;ZZZZZZZZZZZZZZZ
然后在两个文件中查找替换,可是觉得这样效率很低

2.XXXXXXXXXXXX字符串可以根据AbsPos = Z 的Z 生成
大概算法:
if(Z>224) x="shel 1'+'slot '+z-224
else
x="shel 0'+'slot '+z-192

我可以通过类似
grep 'Ab' result|awk -F',' '{print $2}'|awk -F'=' '{if($2>224) print "CN1";if($2<224) print "CN0" }'
的shell来完成单列的转换,可是要完成替换却又做不了

有谁有更好的办法呢?
谢谢!

论坛徽章:
0
2 [报告]
发表于 2004-11-02 09:02 |只看该作者

求助shell 文本处理 !

replace.awk

{
split($2,t,"=";
if(t[2]>224)
$2="shel 1 slot " t[2]-224;
else
$2="shel 0 slot " t[2]-192;
for(i=1;i<=NF;i++){
printf "%s%s", $i,",";
}
printf "\n"
}
awk -F"," -f replace.awk 1

论坛徽章:
0
3 [报告]
发表于 2004-11-02 11:07 |只看该作者

求助shell 文本处理 !

cat a.txt|sed 's/,AbsPos *= *\([0-9]*\),/,\1,/'|awk -F, 'BEGIN{OFS=","}{if($2>224) $2="shel 1 slot "$2-224;else $2="shel 0 slot "$2-192 }{print $0}'

论坛徽章:
0
4 [报告]
发表于 2004-11-02 11:53 |只看该作者

求助shell 文本处理 !

以前也用awk写过一点脚本,可是从来没有做过字段的赋值。要想写出有用的脚本还是要多琢磨啊, 谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP