我有一个带有2列表的sqlite。我想在每个变量或数组中获取列的两个值。例如:
table A
COLUMN A COLUMN B
credit and risk David
nothing susan
.....
我希望获得:变量A ="信用和风险"和变量B ="大卫"然后变量A ="没有"和变量B =" susan"等等。 我尝试使用这些代码但是如果列A有空格我就无法完成字符串,例如我获得" credit"只要。我的代码:
valores=($(sqlite3 alcampo.db "select DESCRIPTION, URL FROM SUBCATEGORYS"))
cnt=${#valores[@]}
echo "cuenta es ... $cnt"
for (( i=0 ; i<cnt ; i++ ))
do
echo "Record No. $i: ${valores[$i]}"
fieldA=${valores[0]}
echo "campo a es ... $fieldA"
fieldB=${valores[1]}
echo "campo B es ... $fieldB"
done
你能帮帮我吗?感谢
答案 0 :(得分:1)
可能有更好的方法来完成这项工作 听起来你不想在回音后保留变量。
while read line; do
fieldA=$( echo "$line" | sed -n "s/\(.*\)\s\{2,\}.*/\1/p" )
fieldB=$( echo "$line" | sed -n "s/.*\s\{2,\}\(.*\)/\1/p" )
echo "campo A es ... ${fieldA}"
echo "campo B es ... ${fieldB}"
done < <(sqlite3 alcampo.db "select DESCRIPTION, URL FROM SUBCATEGORYS")
这将使您的命令“sqlite3 ...”直接进入while循环。 while循环将每行分配给变量“$ line”。
然后我们回显$ line变量并将其打包以获取我们想要的信息。 sed基于列之间有两个或更多空格......这是我根据你发布的内容划分数据的唯一方法。
我希望这会有所帮助。让我知道。