如何在指定位置搜索字符串引用?

如何在指定位置搜索字符串引用?

我试图在目录中查找元素列表(来自文本文件)的出现情况。

下面是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:

相关内容