Chinaunix

标题: 关于awk分隔符的问题 [打印本页]

作者: Voldemort7    时间: 2010-04-04 15:12
标题: 关于awk分隔符的问题
2010-04-02 06:36:05.454 - 232323=report,resend=NORMAL,transferType=WITHDRAWAL,reports=2222

请问我用awk 怎样能把前面的时间和后面逗号作为分隔符的字段提取出来呢,小弟愚钝,请高手指点!
作者: iori809    时间: 2010-04-04 15:16
回复 1# Voldemort7


    是两行字符还是一行?
作者: Voldemort7    时间: 2010-04-04 15:16
一行
作者: iori809    时间: 2010-04-04 15:31
回复 3# Voldemort7


    看看是不是你要的
awk -F"." '{$2=gensub(/.*-/,"",1,$2);print $0}'
作者: Voldemort7    时间: 2010-04-04 15:39
能稍微给我解释一下这句话的含义么,我有的地方看不太懂,麻烦了
作者: Voldemort7    时间: 2010-04-04 15:42
2010-04-02 06:36:05.454 - resend=NORMAL,transferType=WITHDRAWAL

如果我想打印出来这样的结果呢
作者: iori809    时间: 2010-04-04 15:43
这个一两句话说不清楚~而且说实话~建议LZ从最基础的开始看~因为刚才看你提问那个加法的题目就知道你最基本的操作可能都还不会~那么这个带函数的就没法跟你说了。我也是从最基础的开始学的,虽然我还是一个菜鸟吧。不是不帮你呵呵。跟你说了你也写不出来,连大拿们也是这么过来的
作者: Voldemort7    时间: 2010-04-04 15:43
不用解释啦,呵呵,我看明白了
作者: Voldemort7    时间: 2010-04-04 15:45
你是以.作分隔符,把$2时间那地方做了替换,然后打印出来的全部
作者: Voldemort7    时间: 2010-04-04 15:48
感谢指导,呵呵,我是初学者,慢慢来吧,呵呵
2010-04-02 06:36:05.454 - resend=NORMAL,transferType=WITHDRAWAL
麻烦帮看下,我要的是这样的结果
作者: lovegqin    时间: 2010-04-04 16:16
提示: 作者被禁止或删除 内容自动屏蔽
作者: where27    时间: 2010-04-04 21:02
回复 10# Voldemort7
  1. awk -F"[ ,]" '{print $1,$2,$3,$5","$6}' file
复制代码

作者: blackold    时间: 2010-04-04 22:44
看不懂。
作者: vitas333_cu    时间: 2010-04-05 18:27
本帖最后由 vitas333_cu 于 2010-04-05 18:56 编辑
  1. awk -F'[, ]+' '{print $1,$2,$3,$5","$6}'  file
复制代码
-F 指定分隔符 ,  后面用了正则, 也就是 匹配 1。个或多个 逗号,空格 作为分隔符, 源文件内容 也就按照空格和逗号来分隔字段。

2010-04-02 06:36:05.454 - 232323=report,resend=NORMAL,transferType=WITHDRAWAL,reports=2222

1字段  空格  2字段   空格 3字段  空格   4字段   逗号   5字段   逗号   6字段    逗号  7字段
后面的就是 按照顺序打印出 你要的字段,   也就是1, 2,3,5 后面要加个逗号,用引号, 再加6字段。。 得到你的结果。。
  1. awk '{print $1,$2,$3,substr($4,15,37)}' file
复制代码
substr就是指定 要 显示字符串的范围,我这就是15个开始到37个结束
作者: Shell_HAT    时间: 2010-04-05 18:42
楼上真有耐心^_^
作者: Shell_HAT    时间: 2010-04-05 18:44
看不懂。
blackold 发表于 2010-04-04 22:44



楼主厉害,把黑哥搞糊涂了。
作者: vitas333_cu    时间: 2010-04-05 18:59
楼上真有耐心^_^
Shell_HAT 发表于 2010-04-05 18:42



    正好可以学习下 awk。。  没有接触过。。。  以后应该用得着。。。

不过,还是想多看看 大段的shell脚本。。    线编软件比较死板, 脚本shell 要学习的比较多。。。  比较能看得出大体。。
作者: ubuntuer    时间: 2010-04-05 19:32
看不懂。
blackold 发表于 2010-04-04 22:44



    黑哥都不懂了...

应该是楼主的问题黑哥不懂
作者: ccjsj1    时间: 2010-04-05 22:06
回复 12# where27

[ ,] 分隔符用的好,替换没必要了。
  1. awk -F, '{gsub(" -",",");print $1" - "$3","$4}' file
复制代码

作者: 709101040516    时间: 2010-04-06 00:33
其实我也看不懂。




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