Как мне сказать awk не вносить никаких изменений в пустую строку - PullRequest
0 голосов
/ 18 июня 2020

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

    0.1 0.2 0.3
    0.4 0.5 0.6

    0.7 0.8 0.9
    1.0 1.0 1.2

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

    0.1 0.1 0.3
    0.4 0.4 0.6
       -0.1
    0.7 0.7 0.9
    1.0 0.9 1.2

Как мне предотвратить добавление awk лишнего «-0.1» в пустое пространство? Я попытался использовать команду sed, чтобы удалить эту запись c, но поскольку где-то в данных у меня есть «-0.1», которое должно быть в данных, это удаляет некоторые важные аспекты этих данных.

1 Ответ

3 голосов
/ 18 июня 2020
awk 'NF>0 {$2-=0.1}1' file

NF: количество полей в текущей входной записи.

Выход:

0.1 0.1 0.3
0.4 0.4 0.6

0.7 0.7 0.9
1.0 0.9 1.2

См .: 8 мощных встроенных переменных Awk - FS, OFS, RS, ORS, NR, NF, FILENAME, FNR

...