2016-01-14 28 views
0

我已经制表符分隔的文件如下所示:AWK输出前两列然后最小值出的第三和第四列

col1 col2 col3 col4 
a 5 y:3.2 z:5.1 
b 7 r:4.1 t:2.2 
c 8 e:9.1 u:3.2 
d 10 o:5.2 w:1.1 

对于每一行,我要输出的值在第一和第二列和第三列和第四列两个值中的最小数目。

col1 col2 min 
a 5 3.2 
b 7 2.2 
c 8 3.2 
d 10 1.1 

我的差尝试:

AWK -F '\吨'“{MIN =($ 90元< $ 4)? $ 3:$ 4;打印$ 1,$ 2,min}'

不正确的原因之一是因为第三和第四列中的值不是数字而是字符串。 我不知道如何从第三和第四列中提取数字,数字总是在冒号后面。

回答

2

awk来救援!

$ awk -F'[ *:]' 'NR==1{print $1,$2,"min";next} {print $1,$2, $4<$6?$4:$6}' file 

col1 col2 min 
a 5 3.2 
b 7 2.2 
c 8 3.2 
d 10 1.1 
+0

最初的问题表明输入具有制表符分隔的值,所以为了解决这个问题,一种可能性是编写:awk -F'[\ t:]'...'。 – peak

相关问题