我需要一种干净而快速的方法来从文件中读取值并将其放入变量中。 文件竞争是:
02102014,174620,1,0,1045,3358,3,0,1045,0,0,0,0,0,941,4998,2248,4,0,941
所以我会得到第一个值为date,seccond为time,第三个值为number1等等
另外我想调整值(例如:3358必须是33.58或335)
我希望你能理解我的解释:
最好的办法是什么?
值= Number6 Number6 = float(value [0])/ 10
这样的事情?
我的脚本在BASH
INPUT=DATA.tmp #like 03102014,132051,1,3558,0,34568 one line
[ ! -f $INPUT ] && { echo "$INPUT file not found"; exit 99; }
IFS=,
while read line; do
#LINE="03102014,132051,1,3558,0,34568"
LINE_LIST=($LINE)
for list in ${LINE_LIST[@]}; do
echo $list
done
for single in ${LINE_LIST[3]}; do
echo $single
done
done < $INPUT
为什么它不能处理文件读取?
“Bash可能不是这项工作的最佳工具。例如,它没有浮点运算。但是:”
我能用BC解决这个问题吗?
store[3]=$(echo "scale=3; ${storenew[3]} * 1.000" | bc)
答案 0 :(得分:1)
Bash可能不是这项工作的最佳工具。例如,它没有浮点运算。但是:
echo '02102014,174620,1,0,1045,3358' |
while IFS=, read -a a; do
x=${a[0]}
month=${x:0:2}
day=${x:2:2}
year=${x:4:4}
echo $month $day $year
x=${a[1]}
hour=${x:0:2}
min=${x:2:2}
sec=${x:4:2}
echo $hour $min $sec
units=$((a[5] / 100))
fracs=$((a[5] % 100))
echo $units $fracs
done
输出
02 10 2014
17 46 20
33 58