Chinaunix

标题: 資料欄的工作 [打印本页]

作者: c9992    时间: 2007-10-31 14:12
标题: 資料欄的工作
我有一個檔案  格試如下  第一個欄位是日期  後面是資料  但是我想比對  如果第二格大於第一格的話 前後加上1個x
請問這樣可以作的到嗎   謝謝


--------------------------------------原始檔案
20071029,104881,54140,139630,118,  
20071030,104884,54140,139630,118,  
20071031,104899,54140,139630,118,  

--------------------------------------想要變成這樣
20071029,104881,54140,139630,118,  
20071030,x104884x,54140,139630,118,  
20071031,x104899x,54140,139630,118,  

我猜是要用awk作
作者: 寂寞烈火    时间: 2007-10-31 14:22
能用简体中文说一遍么?
作者: springwind426    时间: 2007-10-31 14:25
  1. awk 'BEGIN{FS=OFS=",";old=9999999}{tmp=$2}old<$2{$2="x"$2"x"}{print;old=tmp}'
复制代码

作者: davistar    时间: 2007-10-31 14:32
呵呵 网中人大哥看着合适:)


  1. 审错题鸟。。。:mrgreen:
复制代码

[ 本帖最后由 davistar 于 2007-10-31 15:03 编辑 ]
作者: springwind426    时间: 2007-10-31 14:55
原帖由 davistar 于 2007-10-31 14:32 发表
呵呵 网中人大哥看着合适:)


awk  'BEGIN{OFS=FS=","}{if(NR==1)a=$2;$2=($2



有逻辑错误,他的要求是如果上一行的第二字段小于本行的第二字段就加X,因此,需要保存上一行的第二字段的值,而不是仅仅与第一行的第二字段值进行比较
作者: davistar    时间: 2007-10-31 15:02
标题: 回复 #5 springwind426 的帖子
晕 理解错lz的意思了 谢谢spring兄提醒
作者: linuxnextyear    时间: 2007-10-31 16:03
20071029,104881,54140,139630,118,  
20071030,104884,54140,139630,118,  
20071031,104899,54140,139630,118,  

借地方问一下,我要实现输出倒数第二列怎么写?(或者倒数第n列?)
作者: davistar    时间: 2007-10-31 16:07
标题: 回复 #7 linuxnextyear 的帖子

  1. awk -F, '{NF=NF-n;print $NF}' file

  2. n是自然数
复制代码

作者: linuxnextyear    时间: 2007-10-31 16:18
多谢




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