Chinaunix
标题:
多判断条件awk编写请教
[打印本页]
作者:
kevinwell
时间:
2009-03-15 12:12
标题:
多判断条件awk编写请教
白硎 2004 801 2000 2100 1.1
白硎 2004 802 1700 1800 .9
我需要把以上数据做筛选,请教一下怎么写好:
1、判断第二栏位是否大于1980,如果小于退出,大于继续。
2、如果大于1980,那么对第三栏位进行判断,如果大于三个字符,那么把前两个字符和后两个字符分别提出,如果是三个字符把第一个字符和后两个字符分别提出,比如,801运行完之后输出两列:8和01,如果是1814,输出结果是18和14。
3、同第三栏位相同,第四和第五也需要判断是三个字符还是四个字符,如果是三个,如果是三个字符把第一个字符和后两个字符分别提出,如果是四个,那么把前两个字符和后两个字符分别提出。
新手,希望大侠指教
[
本帖最后由 kevinwell 于 2009-3-15 12:20 编辑
]
作者:
皇家救星
时间:
2009-03-15 13:06
判断 if
退出 next;
长度 length
截取 substr
作者:
sunbw001
时间:
2009-03-15 13:43
awk -F"[ \t]+" '{if(length($2)==3){exit};if(length($2)>3){if(length($3)==3){$3=substr($3,1,1)" "substr($3,2)}else{$3=substr($3,1,2)" "substr($3,3)};if(length($4)==3){$4=substr($4,1,1)" "substr($4,2)}else{$4=substr($4,1,2)" "substr($4,3)}};print $0}' data
这样吗?
[
本帖最后由 sunbw001 于 2009-3-15 13:45 编辑
]
作者:
sunbw001
时间:
2009-03-15 13:56
awk -F"[ \t]+" '{if(length($2)==3){exit};if(length($2)>3){for(it=3;it<=5;it++){if(length($it)==3){$it=substr($it,1,1)" "substr($it,2)}else{$it=substr($it,1,2)" "substr($it,3)}}};print $0}' data
简单点
作者:
welcome008
时间:
2009-03-15 23:48
if(...)
statements
elseif(...)
statements
elseif()
...
else
C里咋用,这里就咋用吧
作者:
飞鸿无痕
时间:
2009-03-16 08:46
楼上说得对!!
作者:
我是一隻羊
时间:
2015-03-12 23:39
本帖最后由 我是一隻羊 于 2015-03-12 23:39 编辑
回错地方了,抱歉.
作者:
zsszss0000
时间:
2015-03-13 09:14
awk '{if($2<1980)next;for(i=3;i<NF;i++){len=length($i);printf substr($i,1,len-2)"\t"substr($i,len-2,2)"\t"}printf "\n"}' file
复制代码
8 80 20 00 21 10
8 80 17 70 18 80
复制代码
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2