Короткийgrep+awkподход:
Допустим, множитель равен3
:
grep -sB 3 "All true" file.out | awk -v x=3 '$1=="|"{ print $3*x }'
Выход:
370.368
2367.37
-v x=3
-передача множителя как x
переменной в скрипт awk Предполагая, что у вас одинаковое количество места в столбцах 1 и 3, вы можете использовать
awk -F '|' -v OFS='|' '$1==$3 { for(i = 3; i < NF-1; i++) $i = $(i+2); NF -= 2 } { print }' sample.txt
Пояснение:
-F '|' -v OFS='|'
установить разделители полей ввода и вывода $1 == $3
условие :столбцы 1 и 3 равны for(i = 3; i < NF-1; i++) $i = $(i+2);
начиная со столбца 3, переместить значения на 2 столбца вперед NF -= 2
уменьшить количество столбцов { print }
безусловно напечатать строку
Обратите внимание, что скрипт не удаляет столбцы 3 и 4 из заголовка, поскольку ID
не равно id
.