Как awk конвертирует файл в формат libsvm? - PullRequest
1 голос
/ 01 апреля 2011

У меня есть файл, первые две строки которого выглядят так:

"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.

Ответы [ 2 ]

4 голосов
/ 01 апреля 2011

Нет необходимости жестко кодировать индексы:

awk 'NR>1 {
  printf("%s ",$2)
  for (i=3; i<=NF; i++) printf("%d:%s ", i-2, $i)
  print ""
}' filename
1 голос
/ 01 апреля 2011

Самый простой способ избавиться от первой строки - это просто выполнить это.Тогда все остальное может быть жестко закодировано, если весь файл выглядит следующим образом.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...