У меня есть файл в списке, как это:Modify через арифметических операций с плавающей точкой (положительные и отрицательные) в файле
-180.0564
-179.0857
178.4739
мне нужно просмотреть весь файл и изменить только положительный (или отрицательный) значения, вычитающие целое число, равное 100 или в моем случае 360. Я разрабатываю этот код в Интернете, и я использую команду bc
для плавающих операций.
Проблема в том, что теперь все отрицательные значения меняются, а не положительные, и я не могу понять, почему.
Вот код:
#!/bin/bash
FILE=$1
while read line;do
if [ $(echo $line '>' 0.0 |bc -l) ]; then
line=$(echo "$line-360" |bc)
echo $line
else
echo $line
fi
done < $FILE
Спасибо за скрипт, я также думаю, что awk проще, но у меня все еще есть эта ошибка 'awk: linea com.:1: {print line> 0? line - 360: line} awk: linea com.:1:^синтаксическая ошибка awk: linea com.:1: {print line> 0? line - 360: line} awk: linea com.:1:^синтаксическая ошибка' Я запускаю непосредственно строку, помещающую мое имя файла в конец, а не «$ FILE», правильно ли это? – user2710445
Извините, мой код был полностью неправильным! Я обновил свой ответ. –
@ user2710445 да, вы можете вызывать awk, передавая имя файла непосредственно из интерактивной оболочки, без необходимости в переменной. –