2015-04-29 2 views
-1

Мне нужно знать, как вычислять проценты строк с помощью одной строки bash. Предположим, что содержание моего файла test.tsv выглядит следующим образом:Вычислить процент пробирок строки Одна строка Команда

Item Sort Clicks A Clicks B 
Item 1 100 50 
Item 2 60 40 

Я хочу знать, что процент за каждый клик сортировать по п так он будет выглядеть следующим образом:

Item Sort Clicks A Clicks B 
Item 1 66.70% 33.33% 
Item 2 60% 40% 

Любые идеи о том, как сделай это?

+0

'эхо«Пункт Сортировка щелкает Клики B Позиция 1 66.70% 33.33% Пункт 2 60% 40% "' –

+1

@JID, человек, вы забыли включить интерпретацию символов обратной косой черты для эха и вставить новые строки ': p' –

ответ

0

Используйте awk для такого рода вещей, bash не выполняет настоящую/с плавающей точкой арифметику.

Awk сценария:

NR==1 { print } 
NR>1 { printf("%s %d %.2f%% %.2f%%\n" 
       , $1, $2 
       , ($3*100/($3+$4)) 
       , ($4*100/($3+$4)) 
      ) } 

Что означает:

  • Если номер строки 1, просто распечатать его как есть.
  • Для других линий, печать колонок один и два, как есть, но вычислить соответствующий процент для столбцов 3 и 4.

В одной строке:

awk 'NR==1{print}NR>1{printf("%s %d %.2f%% %.2f%%\n", $1, $2, ($3*100/($3+$4)), ($4*100/($3+$4)))}' test.tsv 
Смежные вопросы