Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.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
Linux 跨多行计算字段的出现次数_Linux_Bash_Shell_Unix_Scripting - Fatal编程技术网

Linux 跨多行计算字段的出现次数

Linux 跨多行计算字段的出现次数,linux,bash,shell,unix,scripting,Linux,Bash,Shell,Unix,Scripting,我试图计算一列的累积和,并在输出文件的最后一列返回答案 下面是一个示例输入文件 a a a b b c d d 这是所需的输出 a 1 a 2 a 3 b 1 b 2 c 1 d 1 d 2 我希望该解决方案能够从Unix命令行运行 #!/bin/bash PREV="" COUNT="0" cat ${1} | while read LINE ; do if

我试图计算一列的累积和,并在输出文件的最后一列返回答案

下面是一个示例输入文件

a  
a  
a  
b  
b  
c  
d  
d   
这是所需的输出

a    1  
a    2  
a    3  
b    1  
b    2   
c    1   
d    1  
d    2    
我希望该解决方案能够从Unix命令行运行

#!/bin/bash

PREV=""
COUNT="0"

cat ${1} | while read LINE ; do
   if [ "${LINE}" == "${PREV}" ] ; then
     (( COUNT++ ))
   else
     (( COUNT=1 ))
   fi
   echo "${LINE} ${COUNT}"
   PREV="${LINE}"
done

保存此脚本并运行:./script.sh您的_输入_文件

使用关联数组非常容易。与其向我们提出这个问题,不如说你做了什么(以及你在哪里被卡住了)。我不知道你的意思。首先,您想在最后一列中找到答案(尝试对“inputfile”| uniq-c)排序,还是想得到所需输出的结果?谢谢您的建议。您使用sort和uniq的解决方案为我提供了每个元素的计数。但是,我正在寻找所需输出中显示的累积计数。感谢您提供此解决方案。它解决了我的问题,并向我展示了如何使用awk做类似的事情。