Chinaunix

标题: SED小问题,高手.. [打印本页]

作者: wh21667    时间: 2008-08-13 17:31
标题: SED小问题,高手..
awk -F, '{if($6==1) a($10)+=$5}END{for(name in a) print name,a[name]}' file

怎么用sed实现
作者: 爱知    时间: 2008-08-13 17:34
源文件怎么没给
a($10)+=$5} 没见过
作者: ly5066113    时间: 2008-08-13 17:42
原帖由 wh21667 于 2008-8-13 17:31 发表
awk -F, '{if($6==1) a($10)+=$5}END{for(name in a) print name,a[name]}' file

怎么用sed实现


这题可不小,给你个sed实现加法的参考:
http://sed.sourceforge.net/grabbag/scripts/add_decs.sed

至于hash数组怎么实现,自己搞吧。
作者: wh21667    时间: 2008-08-13 17:44
标题: 回复 #3 ly5066113 的帖子
#! /bin/sed -f

# This is an alternative approach to summing numbers,
# which works a digit at a time and hence has unlimited
# precision.  This time it is done with lookup tables,
# and uses only 10 commands.

G
s/\n/-/
s/$/-/
s/$/;9aaaaaaaaa98aaaaaaaa87aaaaaaa76aaaaaa65aaaaa54aaaa43aaa32aa21a100/

:loop
/^--[^a]/!{
  # Convert next digit from both terms into analog form
  # and put the two groups next to each other
  s/^\([0-9a]*\)\([0-9]\)-\([^-]*\)-\(.*;.*\2\(a*\)\2.*\)/\1-\3-\5\4/
  s/^\([^-]*\)-\([0-9a]*\)\([0-9]\)-\(.*;.*\3\(a*\)\3.*\)/\1-\2-\5\4/

  # Back to decimal, but keeping the carry in analog form
  # \2 matches an `a' if there are at least ten a's, else nothing
  #
  #    1-------------           3-    4----------------------
  #               2                               5----
  s/-\(aaaaaaaaa\(a\)\)\{0,1\}\(a*\)\([0-9b]*;.*\([0-9]\)\3\5\)/-\2\5\4/
  b loop
}
s/^--\([^;]*\);.*/\1/
h

刚学SED,怎么感觉这么难?
作者: 寂寞烈火    时间: 2008-08-13 17:55
用sed实现算数运算?牛人呀~~~~~~~~~~~
作者: ly5066113    时间: 2008-08-13 18:03
原帖由 wh21667 于 2008-8-13 17:44 发表
#! /bin/sed -f

# This is an alternative approach to summing numbers,
# which works a digit at a time and hence has unlimited
# precision.  This time it is done with lookup tables,
# and use ...


刚学?怪不得说是sed小问题。
还是先看基础吧。
作者: blackold    时间: 2008-08-13 18:04
标题: 回复 #1 wh21667 的帖子
初生牛犊!
作者: wh21667    时间: 2008-08-13 18:07
晕,看来SED还不是很强大嘛。。
作者: blackold    时间: 2008-08-13 18:10
标题: 回复 #8 wh21667 的帖子
大象无形!
作者: wh21667    时间: 2008-08-13 18:14
原帖由 blackold 于 2008-8-13 18:10 发表
大象无形!

哈哈,笑死了
作者: walkerxk    时间: 2008-08-13 18:33
请问楼主,你会用竹篮去打水么?你会用拖把去画画么?选择正确的工具是很重要的。
作者: 爱知    时间: 2008-08-13 18:34
原帖由 blackold 于 2008-8-13 18:04 发表
初生牛犊!

精神可嘉!
作者: 爱知    时间: 2008-08-13 18:35
原帖由 walkerxk 于 2008-8-13 18:33 发表
请问楼主,你会用竹篮去打水么?你会用拖把去画画么?选择正确的工具是很重要的。

学习性的支持,应用性的不支持
作者: blackold    时间: 2008-08-13 18:36
原帖由 walkerxk 于 2008-8-13 18:33 发表
请问楼主,你会用竹篮去打水么?你会用拖把去画画么?选择正确的工具是很重要的。


至理!
作者: crosslife    时间: 2008-08-13 21:15
sed很庞大...
作者: MYSQLER    时间: 2008-08-13 21:19
呵呵.要想灵活运用sed还要多学多练.多来CU shell版
作者: Shell_HAT    时间: 2008-08-13 21:29
原帖由 walkerxk 于 2008-8-13 18:33 发表
请问楼主,你会用竹篮去打水么?你会用拖把去画画么?选择正确的工具是很重要的。

至理名言
作者: r2007    时间: 2008-08-13 22:02
原帖由 wh21667 于 2008-8-13 18:14 发表

哈哈,笑死了

嘘,大音希声
作者: 爱知    时间: 2008-08-13 22:39
原帖由 r2007 于 2008-8-13 22:02 发表

嘘,大音希声

大家都读过道德经???

  1. 上士闻道,勤而行之;
  2. 中士闻道,若存若亡;
  3. 下士闻道,大笑之。
  4. 弗笑,不足以为道。
  5. 是以建言有之曰:
  6. 明道若昧;进道若退;夷道若□
  7. 上德若谷;广德若不足;建德若婨;质真若渝;
  8. 大白若辱;大方无隅;大器晚成;大音希声;大象无形;
  9. 道隐无名。
  10. 夫唯道,善始且善成。
复制代码

作者: peckerwood    时间: 2008-08-13 23:55
主要还是要整好 正则表达式啊
没有这 一切都白搭




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2