我在bash中运行sql查询以获取文件名及其计划时间。然后,文件将在与其关联的计划时间运行。查询输出如下。我需要捕获日期和时间以及文件名,并在指定的时间运行文件。如何将两个列存储在单独的数组中。
file_name | schedule_time
--------------------------+---------------------
file 1 | 2016-02-25 07:26:00
file 2 | 2016-02-26 07:37:00
file 1 | 2016-02-27 07:39:00
file 3 | 2016-02-27 12:00:00
file 1 | 2016-02-28 07:25:00
file 2 | 2016-02-29 02:15:00
file 2 | 2016-02-29 08:38:00
file 1 | 2016-02-29 12:00:00
答案 0 :(得分:0)
我不确切知道你为什么需要它,但这里有一个简单的 bash 解决方案:
#!/bin/bash
sqldata="file_name | schedule_time
--------------------------+---------------------
file 1 | 2016-02-25 07:26:00
file 2 | 2016-02-26 07:37:00
file 1 | 2016-02-27 07:39:00
file 3 | 2016-02-27 12:00:00
file 1 | 2016-02-28 07:25:00
file 2 | 2016-02-29 02:15:00
file 2 | 2016-02-29 08:38:00
file 1 | 2016-02-29 12:00:00"
sqldata=$(echo "$sqldata" | tail -n +3) # skip first 3 lines
oldifs="$IFS"
IFS=$'\r\n'
lines=( $sqldata )
IFS="$oldifs"
files=()
dates=()
idx=0
for i in "${lines[@]}"
do
files[idx]=$(echo $i | sed -E 's/ +\|.*//')
data[idx]=$(echo $i | sed -E 's/ .*\|//')
idx=$(($idx + 1))
done
echo files:
echo ${files[@]}
echo data:
echo ${data[@]}