Преобразовать все экспоненциальные числа в десятичные числа в файле в Linux?

Предполагая, что каталоги не являются вложенными, выполните цикл по каталогам и проверьте наличие файла в каждом каталоге.

for d in */; do
  if ! [ -e "$d/20190916.file.gz" ]; then
    echo "Missing $d/20190916.file.gz"
  fi
done
1
24.11.2020, 08:51
1 ответ

Вы можете зациклить все поля каждой строки. Проверка того, является ли поле числовым значением($i+0==$i)и (&&), если оно содержит символ e, кажется хорошей. Поэтому мы изменяем только эти поля на десятичные числа.

Здесь используется функция GNU awk sprintf:

awk '{
    for (i=1;i<=NF;i++) if ($i+0 == $i && $i ~ /e/) $i = sprintf("%.10f", $i)
} 1' file
  • Вы можете использовать любой формат вместо .10f.
  • 1в конце означает действие по умолчанию, до printстроки.
2
18.03.2021, 22:47

Теги

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