如何在bash中为循环传递内部命令
我正在编写一个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循环中使用管道命令?您可以使用此
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也不会这样做(我像往常一样将行切碎,但不进行排序和分组)