免费注册 查看新帖 |

Chinaunix

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

请教,如此文件内容格式如何处理? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-11-24 11:30 |只看该作者 |倒序浏览
刚开始接触shell,请高手指点。

有一个配置文件,内容如下
comm A=23 B=5 C=56
dif A=45 B=98 D=9 C=51
fge A=8 B=29 D=11 C=76 E=8
.....

第一列为命令,后面的为命令所带参数,其中,"A=x","B=x","C=x"是固定都有的,其他参数就不固定了。

请问如何去掉其他参数,形成如下文件:
comm A=23 B=5 C=56
dif A=45 B=98 C=51
fge A=8 B=29 C=76
.....


先行谢过!

[ 本帖最后由 dragonlong 于 2005-11-24 11:33 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2005-11-24 11:42 |只看该作者
awk '{print$1$2$3$4}' 配置文件>nelfile

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
3 [报告]
发表于 2005-11-24 11:45 |只看该作者
  1. cut -f1-4 -d' '<file>newfile
复制代码

论坛徽章:
0
4 [报告]
发表于 2005-11-24 11:55 |只看该作者
sorry,我表达的不够清楚。。。。
后面的参数中 "A=x","B=x",C="x"并不是按顺序排列的,其他的参数穿插在其中。。所以,要想得到下面那个结果,必须把穿插其中的"D=x","E=x"给剔出来,而不应该简单的把前面四列输出来。

论坛徽章:
0
5 [报告]
发表于 2005-11-24 11:57 |只看该作者
  1. sed 's/[^ABC]=[^ ]*//g' file
复制代码
wayy2008 该用户已被删除
6 [报告]
发表于 2005-11-24 12:20 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
7 [报告]
发表于 2005-11-24 13:40 |只看该作者
咋看一下,我以为我看懂了。可是测试了一把就有的糊涂了,

$ vi test
"test" 3 lines, 93 characters
comm ACFB=23 BCF=5 CCF=56
dif ACF=45 BCF=98 DCF=9 CCF=51
fge ACF=8 BCF=29 DCF=11 CCF=76 ECF=8

$ sed 's/[^ABC]=[^ ]*//g' test
comm ACFB=23 BC CC
dif AC BC DC CC
fge AC BC DC CC EC

怎么能达到以下结果呢?
comm ACFB=23 BCF=5 CCF=56
dif ACF=45 BCF=98 CCF=51
fge ACF=8 BCF=29 CCF=76

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
8 [报告]
发表于 2005-11-24 14:17 |只看该作者
还是笨法子:

  1. awk '{printf $1" ";for(i=2;i<=NF;i++)if($i~/^[^D-Z]/)printf $i" ";printf "\n"}'
复制代码

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:56:11
9 [报告]
发表于 2005-11-24 14:23 |只看该作者

回复 8楼 寂寞烈火 的帖子

sed -e "s/ [^A^B^C][A-Z]*=[0-9][0-9]*//g"

论坛徽章:
0
10 [报告]
发表于 2005-11-24 15:55 |只看该作者
$ vi test
"test" 3 lines, 93 characters
comm ACFB=23 BCF=5 CCF=56
dif ACF=45 BCF=98 DCF=9 CCF=51
fge ACF=8 BCF=29 DCF=11 CCF=76 ECF=8

$ sed 's/[^ABC]=[^ ]*//g' test
comm ACFB=23 BC CC
dif AC BC DC CC
fge AC BC DC CC EC

怎么能达到以下结果呢?
comm ACFB=23 BCF=5 CCF=56
dif ACF=45 BCF=98 CCF=51
fge ACF=8 BCF=29 CCF=76

多谢楼上诸位!
各位大大,请原谅我的再次偷懒,比较急,自己没时间研究了。
如何才能达到如下结果呢?
comm 23 5 56
dif 45 98 51
fge 8 29 76
即,把XXX=这部分全部去除。。
请高手再指点了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP