2016-01-14 27 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

相關問題