2011-04-01 51 views
0

我有它的頭兩行是這樣的文件:如何AWK將文件轉換爲LIBSVM格式?

"price" "spec.long" "spec.short" "com.long" "com.short" "small.long" "small.short" 
"1" 10.8 10270 -4069 57894 -76045 58818 -46868 

我想消除第一行,消除引號內的整列,消除了報價,並有結果顯示如下:

10.8 1:10270 2:-4069 3:57894 4:-76045 5:58818 6:-46868 

我在考慮是否值得學習awk來完成像這樣的任務和類似的任務。或者,如果我的時間更好地用在Perl,Ruby或Python解決這個。

回答

1

最簡單的方法來擺脫第一線的只是用grep顯示它。然後其餘的可以被硬編碼,假設整個文件看起來像這樣。

grep -v price file | awk '{print $2 " 1:" $3 " 2:" $4 " 3:" $5 "4:" $6 " 5:" $7 " 6:" $8}'

+0

那就得了。我在學習awk。 (和grep)。謝謝。 – Milktrader 2011-04-01 16:19:09

+0

非常推薦。即使只是AWK我知道(主要是在這裏展出)的點點是無休止有益的,因爲有其他的shell工具集。 – drysdam 2011-04-01 16:21:39

3

無需硬編碼索引:

awk 'NR>1 { 
    printf("%s ",$2) 
    for (i=3; i<=NF; i++) printf("%d:%s ", i-2, $i) 
    print "" 
}' filename 
+0

欣賞廣義版本。謝謝。 – Milktrader 2011-04-01 19:40:39

相關問題