从文件中读出1个值并在bash中创建一个字符串/变量

时间:2014-10-02 17:03:45

标签: bash

我需要一种干净而快速的方法来从文件中读取值并将其放入变量中。 文件竞争是:

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)    

1 个答案:

答案 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
相关问题