如何在bash中为循环传递内部命令

如何在bash中为循环传递内部命令,bash,Bash,我正在编写一个bash脚本,以迭代给定值的文件行 我用来列出可能值的命令是: cat file.csv | cut -d';' -f2 | sort | uniq | head 当我像这样在for循环中使用它时,它停止工作: for i in $( cat file.csv | cut -d';' -f2 | sort | uniq | head ) do //do something else with these lines done 如何在for循环中使用管道命令?您可以使用此

我正在编写一个bash脚本,以迭代给定值的文件行

我用来列出可能值的命令是:

cat file.csv | cut -d';' -f2 | sort | uniq | head
当我像这样在for循环中使用它时,它停止工作:

for i in $( cat file.csv | cut -d';' -f2 | sort | uniq | head )
do
    //do something else with these lines
done

如何在for循环中使用管道命令?

您可以使用此awk命令为第2列的每个唯一值获取第3列的总和:

awk -F ';' '{sums[$2]+=$3} END{for (i in sums) print i ":", sums[i]}' file.csv
输入数据:

asd;foo;0
asd;foo;2 
asd;bar;1 
asd;foo;4 
foo: 6 
bar: 1 
输出:

asd;foo;0
asd;foo;2 
asd;bar;1 
asd;foo;4 
foo: 6 
bar: 1 

我需要在后面使用由它找到的行的其他列,所以我需要首先对数据进行截断。echo命令在那里是为了看看它是否有效,但遗憾的是没有;傅;asd为0;傅;2自闭症;酒吧;1名自闭症患者;傅;4我必须为第2列中的每个uniqe表达式添加所有数字。在本例中,输出将是:foo:6,bar:1我如何为每个可能的唯一表达式调用awk?可以这样做,但您需要在问题中显示示例输入和预期输出。让我们来看看。这在某种程度上是可行的,但两种类型都不能,如果我在这个循环中使用它们,uniq也不会这样做(我像往常一样将行切碎,但不进行排序和分组)