免费注册 查看新帖 |

Chinaunix

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

请教一个脚本的写法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-17 17:22 |只看该作者 |倒序浏览
20可用积分
有这样一个文件, "s1=aaa  s2=bbb  s2=ccc",其中s2重复两次,但要取得第一个s2的值。
请问这个脚本怎么写?

最佳答案

查看完整内容

最直白的办法:如果第二列不是s2,那就出错了。10楼的办法,如果第三列不是s2,出错。9楼的办法,依赖严谨的文件格式,如果第二列不是s2,出错,11楼遇到的问题就是因为字段分隔符不是一个空格,是两个[ 本帖最后由 Celinde 于 2010-1-18 12:14 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2010-01-17 17:22 |只看该作者
最直白的办法:
  1. echo 's1=aaa   s2=bbb  s2=ccc' | awk '{print $2}' | awk -F\= '{print $2}'
复制代码

如果第二列不是s2,那就出错了。

10楼的办法,如果第三列不是s2,出错。
9楼的办法,依赖严谨的文件格式,如果第二列不是s2,出错,11楼遇到的问题就是因为字段分隔符不是一个空格,是两个

[ 本帖最后由 Celinde 于 2010-1-18 12:14 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2010-01-17 17:24 |只看该作者
"s1=aaa  s2=bbb  temp=$s2 s2=ccc "

论坛徽章:
0
4 [报告]
发表于 2010-01-17 17:25 |只看该作者
原帖由 cablink 于 2010-1-17 17:22 发表
有这样一个文件, "s1=aaa  s2=bbb  s2=ccc",其中s2重复两次,但要取得第一个s2的值。
请问这个脚本怎么写?

但是不知道你为什么那个变量非要复値两次

论坛徽章:
0
5 [报告]
发表于 2010-01-17 18:01 |只看该作者
这是个文件,这个文件里的s2代表两个不同的项目,是当初设计的问题,现在没办法更改,只好写个脚本把它们读出来,但现在只要先读出第一个s2即可。想找个awk的脚本

论坛徽章:
0
6 [报告]
发表于 2010-01-17 18:56 |只看该作者
sed:
  1. sed   '/^s2=/!d;s/^s2=//;q'   file
复制代码


awk的我再想想..

论坛徽章:
0
7 [报告]
发表于 2010-01-17 19:10 |只看该作者
awk:
  1. awk 'BEGIN{FS="="}$1=="s2"{print $2 ;exit(0);}'   file
复制代码

论坛徽章:
0
8 [报告]
发表于 2010-01-17 19:23 |只看该作者
等下..  "s1=aaa  s2=bbb  s2=ccc" 这是行存放的?,不是列存放的?


先应付下..
sed  's/\(s2=[^ ]*\)/\n\1\n/g' file |sed   '/^s2=/!d;s/^s2=//;q'

[ 本帖最后由 Celinde 于 2010-1-17 19:45 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2010-01-17 22:03 |只看该作者
相当于一条记录,每行都是这么存储的

论坛徽章:
0
10 [报告]
发表于 2010-01-17 22:33 |只看该作者
也就是说你能保证每行的第二列都是s2? 那就简单了

awk 'BEGIN{FS="[ =]"}{print $4}' file
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP