Запись столбца замены с суммой других записей столбца

Может быть Ваша корневая файловая система, не смонтирован. Существует два решения:

Регулярный: Сделайте и установите init ramfs изображение.

Простой: Выберите Y (не M) для Вашего Хоста SCSI / устройство SCSI / Корневые драйверы файловой системы на этапе делают menuconfig. Другими словами: Позвольте своему ядру смонтировать Ваш rootfs независимо.

2
28.07.2014, 00:19
2 ответа

Sed не может делать арифметику¹. Вместо этого используйте awk.

awk '
    $4 == "calc" {sub(/calc(  |\t)/, sprintf("%-6.2f", $3 - $2))}
    1'

В конце 1 означает распечатать все (после любого предшествующего преобразования). Вместо подстановки текста на sub можно присвоить $4, но при этом межколоночный пробел (которым может быть любая последовательность пробелов и табуляций) будет заменен на один символ пробела. Если ваши колонки разделены табуляциями, вы можете использовать

awk '
    BEGIN {ORS = "\t"}
    $4 == "calc" {$4 = sprintf("%.2f", $3 - $2))}
    1'

¹ Да, да, технически это возможно, так как это Turing-complete. Но не в здравом смысле.

6
27.01.2020, 21:52
awk -F "\t" '$4 == "calc" {$4 = $3-$2}1' OFS='\t' file
.
1
27.01.2020, 21:52

Теги

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