我试图在目录中查找元素列表(来自文本文件)的出现情况。
下面是bash
我正在使用的代码,但我无法将grep
命令的输出发送到控制台。
#!/bin/bash
FILENAME=$1
count=0
while read LINE
do
let count++
echo "$count $LINE"
grep -r $LINE /home/user/vaishnavi
done < $FILENAME
echo -e "\nTotal $count Lines read"
输出:
1 ASK
2 TELL
3 ORDER
4 NUMBER
5 SIZE
6 BASKET
7 FRUIT
8 VEGGIES
Total 8 Lines read
我只获取元素列表,但不获取它们在指定位置的出现次数。
我的代码有什么问题吗?
谢谢。
答案1
我认为你的代码应该是这样的
如果你希望输出像
Serial_Number Name_Of_Element 计数 文件名 1 文件名 2
#!/bin/bash
FILENAME=$1
count=0
while read LINE
do
let count++
VAL=$(grep -r $LINE /home/user/vaishnavi | awk -F ':' '{print $1}' | sort -u )
NUM=$(grep -r $LINE /home/user/vaishnavi | wc -l)
echo "$count $LINE $NUM"
echo "$VAL"
done < $FILENAME
echo -e "\nTotal $count Lines read"
答案2
grep -xrHf elementsfile.txt /home/user/vaishnavi | sort | uniq -c
- x:匹配整行(ASK 不应匹配 BASKET)
- r:扫描您的文件夹
- H:打印文件名(文件:匹配)
- f:从文件中读取要匹配的元素
这是按文件排序的,如果想按匹配元素排序添加:
| sort -k2 -t: