【发布时间】:2016-12-26 11:13:07
【问题描述】:
我已经搜索过,但到目前为止一无所获。我希望列出一个目录,然后对每个文件进行分类以查找唯一项目,然后使用这两个项目来计算文件中的项目。
第一个 ls 目录
ls
- file1.txt
- file2.txt
- file3.txt 等等……
第二个 grep 每个都是唯一的
cat $file | awk '{print $8}' | sort | uniq
应该输出数字
- 83886096
- 1040187393
- 201326673 等等……
第三,使用找到的 uniq 数字 grep 它来自的文件来计算有多少
cat $file | grep $output | wc -l
通过 $file $output $count 在行上以某种方式获得不错的输出
提前谢谢你
我假设我将不得不做一些这种性质但更复杂的事情(因为我无法让它工作)
FILE="$(ls -1)"
ls > list.txt
input=list.txt
while read line
do
OUTPUT=cat ${FILE} | awk '{print $8}' | sort | uniq
cat ${FILE} | grep ${OUTPUT} | wc -l
done < "$input"
当我运行它时,它似乎有点工作,我得到以下输出
grep: 0652-033 Cannot open 83886096.
0
grep: 0652-033 Cannot open 83886096.
0
所以它找到了文件并读取了它们,但无法进行计数
【问题讨论】:
-
oook 这或多或少很清楚,但您能否显示minimal reproducible example,以便我们可以处理已定义的案例?
-
定义大小写是什么意思
-
一些样本输入和期望的输出
-
所以给定一组文件,您想计算每个文件中第 8 个字段出现的次数,对吧?请注意,您的尝试有一些可以通过 shellcheck.net 跟踪的语法错误。例如,要将输出存储在一个变量中,你需要说
var=$(command),所以你应该说OUTPUT=$(awk '...' file | sort | uniq)。