Linux grep:从子文件夹中的文件中搜索单词,但从匹配总数中排除给定单词

Linux grep:从子文件夹中的文件中搜索单词,但从匹配总数中排除给定单词,linux,grep,file-search,Linux,Grep,File Search,我有一个名为folder的文件夹。在文件夹下我有两个子文件夹子文件夹1和子文件夹2 这两个子文件夹都有相同的文本文件file.txt。 该文本文件包含以下行: text text line line text text text text 我试图用grep获得text单词的总计数,但从计数中排除text单词 如果我运行grep-ro“text”folder/|wc-l | xargs echo“total matches:”我得到的计数是12,但我要查找的结果是4,因为这两个文件只有两个tex

我有一个名为
folder
的文件夹。在
文件夹下
我有两个子文件夹
子文件夹1
子文件夹2

这两个子文件夹都有相同的文本文件
file.txt
。 该文本文件包含以下行:

text
text
line
line
text text
text text
我试图用grep获得
text
单词的总计数,但从计数中排除
text
单词

如果我运行
grep-ro“text”folder/|wc-l | xargs echo“total matches:”
我得到的计数是12,但我要查找的结果是4,因为这两个文件只有两个
text
单词,总共4个


我曾尝试运行
grep-ro“text”-v“text text”文件夹/|wc-l | xargs echo“total matches:”
和许多其他语法,使用-v将
text文本
从计数中排除,但没有成功。

使用awk更容易实现,简言之,您希望打印(计数)仅出现一次“text”的行:

  • 使用“text”(-F“text”)作为字段分隔符
  • 当“text”是字段分隔符时,打印字段数为2的行

使用awk更容易实现,简而言之,您希望打印(计数)仅显示一次“文本”的行:

  • 使用“text”(-F“text”)作为字段分隔符
  • 当“text”是字段分隔符时,打印字段数为2的行

如果你有
grep-p
,你可以使用负面环视


grep-Pro'(?如果你有
grep-p
,你可以使用负面环视


grep-Pro'(?这很有效。因为我是awk新手,我不明白当“text”时是什么使字段数变为2用作字段分隔符。尝试查看awk的示例,例如,当一个点用于拆分ip地址时,非常清楚,但我想知道为什么在这种情况下字段的数量是两个。只有一个单词“text”,这是我需要的一个字段,所以我不知道第二个字段来自何处?我们使用了“text”字段分隔符/分隔符,因此当该分隔符在字符串中出现一次时,字段总数将为2(NF),如果分隔符出现两倍,则字段总数将为3。例如:field1 text field2,feild1 text field2 text Field3在我们的示例中,因为在“text”之前或之后没有单词,所以字段数仍将为2,但这些字段将为NULL/空。您的意思是这样的(使用delimeter,)。“因此,当该分隔符在字符串中出现一次”例如:
t,ext
Yes,这就是我的意思。这非常有效。由于我是awk新手,我不明白“text”时是什么使字段数变为2“用作字段分隔符。尝试查看awk的示例,例如,当一个点用于拆分ip地址时,非常清楚,但我想知道为什么在这种情况下字段的数量是两个。只有一个单词“text”,这是我需要的一个字段,所以我不知道第二个字段来自何处?我们使用了“text”字段分隔符/分隔符,因此当该分隔符在字符串中出现一次时,字段总数将为2(NF),如果分隔符出现两倍,则字段总数将为3。例如:field1 text field2,feild1 text field2 text Field3在我们的示例中,因为在“text”之前或之后没有单词,所以字段数仍将为2,但这些字段将为NULL/空。您的意思是这样的(使用delimeter,)。“因此,当该分隔符在字符串中出现一次”例如:
t,ext
Yes,这就是我的意思。
awk -F "text" 'NF==2 { print}' folder/subfolder*/*| wc -l  | xargs echo "total matches :"
total matches : 4