Получить пары линий и умножить

Я пытаюсь разобрать html-файл для некоторых значений, используя bash. Итак, у меня есть большой текстовый файл с такими цифрами

3 2 4 2 

То, что я хочу сделать, это получить две строки, умножить оба числа, а затем сохранить значение переменной и добавить ее в общую сумму. В этом случае это было бы 3*2=6 и 4*2=8 . Итак, X=0, X=X+6, X=X+8 тогда X=14 .

3 Solutions collect form web for “Получить пары линий и умножить”

Пытаться

 xargs -n2 < file | while read xy; do ((X+=x*y)); echo $X; done 
  • xargs -n2 : группирует числа попарно
  • read xy : сохранить первое и второе число в переменных x и y
  • ((...)) является просто арифметической оценкой в ​​bash

Вы увидите на экране, как растет сумма.

Вы можете использовать paste и bc чтобы делать то, что вы хотите:

 $ paste -d"*" - - <file.txt | paste -d"+" - - | bc 14 

Сломать

Здесь мы видим, что paste принимает 2 за раз и помещает знак умножения между ними.

 $ paste -d"*" - - <file.txt 3*2 4*2 

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

 $ paste -d"*" - - <file.txt | paste -d"+" 3*2+4*2 

Наконец, готовая строка может быть передана на bc для выполнения математических операций.

 $ paste -d"*" - - <file.txt | paste -s -d'+' | bc 14 

Использование paste в приведенных выше командах меняется. При выполнении слияния линий для формирования X * Y мы указываем, что paste принимает две строки (обозначенные как тире: - - ). Во втором случае мы используем paste чтобы взять всю серию символов и включить + между каждым атомом.

Вот решение awk (при условии четного числа строк)

  awk '{y=$0; getline x; var += x*y};END{print var}' file.txt 
  • Как форматировать файл во время перемещения?
  • Сортировка каталогов и файлов в каждом каталоге в порядке возрастания и экспорт данных в csv
  • Измените конец нескольких похожих имен файлов
  • Как сортировать коллекцию строк из разных файлов?
  • Можно ли использовать split для создания кусков символов из китайских байтов юникода?
  • Выберите файл на основе количества строк и обработайте результат
  • Удалить форматирование терминала из файла
  • Двоичный поиск неисправной линии
  • подсчет числа вхождений в файле списка данных
  • Найти и удалить дубликаты txt-файлов
  • Найти файлы, содержащие ключевое слово, и показать только путь к файлу и номер строки
  • удалять файлы на основе diff двух текстовых файлов
  • Linux и Unix - лучшая ОС в мире.