Как может я вокруг всех чисел в файле?

Кажется, что Вам нужен инвертированный статус выхода, таким образом, Вы могли сделать:

system("[ ! -e file ]; echo $?")

или:

system("[ -e file ]; echo $((!$?))")

(отметьте это -f для того, если файл существует и является регулярным файлом).

4
08.11.2013, 16:57
2 ответа

Это, более легко покончили perl:

perl -pe 's/[-+]?\d*(?:\.?\d|\d\.)\d*(?:[eE][-+]?\d+)?/sprintf("%.2g",$&)/ge'
5
27.01.2020, 20:50
  • 1
    Это, кажется, генерирует числа с другой точностью, например, 0.03747117319160571667 округлен к 0,03747? –  MaVe 08.11.2013, 17:01
  • 2
    Это дает 0.037 для меня, который является точностью 2. Возможно, Вы хотите .2f вместо .2g для 2 цифр после десятичной точки (0.04) или .2e (3.75e-02) –  Stéphane Chazelas 08.11.2013, 17:10
  • 3
    2f был тем, в чем я нуждался. Это решило проблему, Спасибо! –  MaVe 08.11.2013, 17:22

Если Вы только имеете awk в наличии:

awk '{
    while (match($0, /[0-9]+\.[0-9]+/)) {
        printf "%s%.2f", substr($0, 1, RSTART-1), substr($0, RSTART, RLENGTH)
        $0 = substr($0, RSTART+RLENGTH)
    }
    print
}'
3
27.01.2020, 20:50

Теги

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