Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在shell中迭代结果集_Shell_Unix_Iteration_Resultset - Fatal编程技术网

在shell中迭代结果集

在shell中迭代结果集,shell,unix,iteration,resultset,Shell,Unix,Iteration,Resultset,所以我已经找了很多关于这个的资料,我对Shell还是个新手, 我想在SHELL脚本中迭代Resultset行,并且对于每一行,我想使用当前行的每一列执行一些代码。 假设结果集如下所示 Query Priority Size --------------------------------------------------- this is a sentence to execute high 124400 thi

所以我已经找了很多关于这个的资料,我对Shell还是个新手, 我想在SHELL脚本中迭代Resultset行,并且对于每一行,我想使用当前行的每一列执行一些代码。 假设结果集如下所示

Query                             Priority  Size 
---------------------------------------------------  
this is a sentence to execute      high    124400 
this is another example            low     15000000
...
那么,我如何迭代这个结果集,并将每个列存储到自己的变量中呢?以下是第一行的示例:

var1="this is a sentence to execute"
var2="high"
var3=124400
#repeat process for next line

以下是您可以做的:

  • 将数据提取到带分隔符的文件(例如,csv)中,如果可能,请避免使用标题。如果确实有标题,请确保在阅读时排除它们
  • 将数据从文件读入数组或一组变量
像这样:

# using an array - works great if we have a variable number of columns
while IFS=, read -r -a row; do
  # ${row[0]} => column1, ${row[1]} => column2 and so on
  # process data
done < input.dat

# using variables - works great if we have a fixed set of variables
while IFS=, read -r column1 column2 column3; do
  # process data
done < input.dat
#使用数组-如果列数可变,效果非常好
当IFS=时,读取-r-a行;做
#${row[0]}=>column1,${row[1]}=>column2,依此类推
#过程数据
完成

另请参见:

以下是您可以做的:

  • 将数据提取到带分隔符的文件(例如,csv)中,如果可能,请避免使用标题。如果确实有标题,请确保在阅读时排除它们
  • 将数据从文件读入数组或一组变量
像这样:

# using an array - works great if we have a variable number of columns
while IFS=, read -r -a row; do
  # ${row[0]} => column1, ${row[1]} => column2 and so on
  # process data
done < input.dat

# using variables - works great if we have a fixed set of variables
while IFS=, read -r column1 column2 column3; do
  # process data
done < input.dat
#使用数组-如果列数可变,效果非常好
当IFS=时,读取-r-a行;做
#${row[0]}=>column1,${row[1]}=>column2,依此类推
#过程数据
完成

另请参见:

谢谢,这太完美了,我只是想知道是否还有其他方法可以在不使用外部文件的情况下实现同样的效果?您可以将数据提取器的输出直接导入while循环。谢谢,这太完美了,我只是想知道是否有任何方法可以在不使用外部文件的情况下实现同样的效果?您可以将数据提取器的输出直接导入while循环。