Как умножить файл данных с другим индексным файлом данных?

Для использования badram опции, Вам нужны исправленное ядро и последний патч, доступный только для 2.6.28.

Я думаю, что Вы используете более свежее ядро без того патча, и это - причина черного экрана.

Необходимо использовать memmap опцию вместо badram.

2
10.03.2014, 07:05
4 ответа

Вот один способ:

$ paste index.txt data.txt | 
    awk '{for(i=2;i<=NF;i++){printf "%d\t", $1*$(i)}; print "";}' 
1   2   3   4   5   
4   6   8   10  12  
9   12  15  18  21  
16  20  24  28  32  
25  30  35  40  45  
36  42  48  54  60  
49  56  62  70  77  
64  72  80  88  96  

paste соединит соответствующие строки файла, поэтому индекс будет $ 1 в скриптлете awk , который просто просматривает каждое поле и умножает его на текущее значение индекса.

Аналогичный, но немного более идиоматичный подход в Perl:

$ paste index.txt data.txt | perl -lane 'print join "\t",map{$_*$F[0]}@F[1..$#F]'
3
27.01.2020, 21:49

Вы можете использовать awk . Прочтите соответствующую строку из index.txt при чтении data.txt и умножьте каждое поле на значение, полученное из первого:

awk '{getline f < "index.txt"; for(i=1;i<=NF;i++) {printf("%d\t",$i*f)} printf("\n")}' data.txt

Для вашего ввода будет получено:

1       2       3       4       5
4       6       8       10      12
9       12      15      18      21
16      20      24      28      32
25      30      35      40      45
36      42      48      54      60
49      56      62      70      77
64      72      80      88      96
3
27.01.2020, 21:49

Попробуйте следующее:

awk 'FNR==NR{a[FNR]=$0;next}
    {for(i=1;i<=NF;i++){printf("%d\t",$i*a[FNR])}printf("\n")}' index.txt data.txt

Для index.txt мы сохраняем значение каждой строки в ассоциативном массиве. Затем при обработке data.txt мы умножаем значение каждого поля на соответствующее значение в ассоциативном массиве, который равен a [FNR] .

Он работает аналогично ответу @ devnull, но нам не нужно жестко кодировать имя файла в нашей программе.

4
27.01.2020, 21:49
  • Simple perl:

    .

  • 2
    27.01.2020, 21:49

    Теги

    Похожие вопросы