免费注册 查看新帖 |

Chinaunix

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

awk求助!高手快帮忙! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-06-16 09:20 |只看该作者 |倒序浏览
求助:

想把某一文件中所有第一个字段以SS开头的行的第5个字段删除,如何用shell处理或者用awk处理?

论坛徽章:
0
2 [报告]
发表于 2003-06-16 10:02 |只看该作者

awk求助!高手快帮忙!

原帖由 "wxy214" 发表:
求助:

想把某一文件中所有第一个字段以SS开头的行的第5个字段删除,如何用shell处理或者用awk处理?

字段用什么分隔开啊??
awk '{if($0~/^SS/){$5="";print $0}}'urfile > newfile
这是用空格分隔的情况~~~~

论坛徽章:
0
3 [报告]
发表于 2003-06-16 10:36 |只看该作者

awk求助!高手快帮忙!

谢谢您的帮助,这种方法我也用过!
但是因为我这个文本里面并不是所有的行都以SS开头,如果按照你说的方法处理的话,那些不以SS为第一个字段的句子就不显示了!最终出来的新文件就只能显示以SS开头的句子了!

   对了,这些字段是以空格分开的!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
4 [报告]
发表于 2003-06-16 10:41 |只看该作者

awk求助!高手快帮忙!

  1. awk '{if($1~/^SS/)$5="";print $0}' filename
复制代码

论坛徽章:
0
5 [报告]
发表于 2003-06-16 11:00 |只看该作者

awk求助!高手快帮忙!

原帖由 "wxy214" 发表:
谢谢您的帮助,这种方法我也用过!
但是因为我这个文本里面并不是所有的行都以SS开头,如果按照你说的方法处理的话,那些不以SS为第一个字段的句子就不显示了!最终出来的新文件就只能显示以SS开头的句子了!

..........
   
去掉IF判断后边的那对大阔号就好了啊~~呵呵~~

论坛徽章:
0
6 [报告]
发表于 2003-06-16 11:54 |只看该作者

awk求助!高手快帮忙!

谢谢各位的帮助!不过小弟实在是愚笨,下面的问题也请高手指点:
下面是我的一个文件!要求就是:把第一个字段中包含SS行中的第5个字段删除;把以SS开头的行中的$W和$L 的$字符去掉;把第一个字段中包含SS和XI的行中的第一个字段中的SS换成XS;在这个文本中随便添加一行;

example:
SS1  NET  VOU  G10  3.5E02  $W=10  $L=10
SS0  REF  NET  G10  3.5E02  $W=10  $L=10
SS13-XI4  VDD!  NET  RH5  6E03  $W=5  $L=3
SS13-XI4-1  VDD!  NET  RH5  6E03  $W=5  $L=3
SS13-XI4-2  VDD!  NET  RH5  4E03  $W=5  $L=3

谢谢!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
7 [报告]
发表于 2003-06-16 13:08 |只看该作者

awk求助!高手快帮忙!

  1. awk '{if($1~/^SS/)$5="";print $0}' a|sed 's/\$//g;s/^SS\(...XI\)/XS\1/' filename
  2. SS1 NET VOU G10  W=10 L=10
  3. SS0 REF NET G10  W=10 L=10
  4. XS13-XI4 VDD! NET RH5  W=5 L=3
  5. XS13-XI4-1 VDD! NET RH5  W=5 L=3
  6. XS13-XI4-2 VDD! NET RH5  W=5 L=3
复制代码

论坛徽章:
0
8 [报告]
发表于 2003-06-16 14:36 |只看该作者

awk求助!高手快帮忙!

[quote]原帖由 "admirer"][/quote 发表:
     
哈哈,同意同意,感觉你写的CODE就是翻译的他的话,有意思,其实熟悉了语法,感觉写程序就好象在说话~~~哈哈~

论坛徽章:
0
9 [报告]
发表于 2003-06-16 14:51 |只看该作者

awk求助!高手快帮忙!

admirer真是此道之高人也!   
不过您好像还是没理解我的意思!看来是我的表达有问题,实在惭愧!
再表述一下要求
就是:
1)把第一个字段中包含SS行中的第5个字段删除;
2)把以SS开头的行中的$W和$L 的$字符去掉;
3)把第一个字段中包含SS和XI的行中的第一个字段中的SS换成XS;
4) 在这个文本中随便添加一行,例如加上param scale这一句;

我修改一下我这个文件,就更容易明白了!
example:
SS1 NET VOU G8 3.5E02 $W=10 $L=10
SS0 REF NET G10 3.5E02 $W=10 $L=10
SS13-XI4 VDD! NET RH4 6E03 $W=5 $L=3
SS1-XI5-1 VDD! NET RH5 3E03 $W=5 $L=3
SS113-XI7-2 VDD! NET RH6 4E03 $W=5 $L=3
MX22 net gnd $W=10 $L=7

要求MX开头的这句中的$符合不能被删除!

希望高手能帮忙!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
10 [报告]
发表于 2003-06-16 15:08 |只看该作者

awk求助!高手快帮忙!

加个条件就行了!
  1. awk '{if($1~/^SS/)$5="";print $0}END{printf"This is file end.\n"}' filename|sed '/^SS/s/\$//g;s/^SS\(...XI\)/XS\1/'
  2. SS1 NET VOU G10  W=10 L=10
  3. SS0 REF NET G10  W=10 L=10
  4. XS13-XI4 VDD! NET RH5  W=5 L=3
  5. XS13-XI4-1 VDD! NET RH5  W=5 L=3
  6. XS13-XI4-2 VDD! NET RH5  W=5 L=3
  7. MX22 net gnd $W=10 $L=7
  8. This is file end.
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP