linux - grep:从子文件夹中的文件中搜索单词,但从匹配总数中排除给定单词
问题描述
我有一个名为folder
. 在folder
我有两个子文件夹subfolder1
和subfolder2
.
这两个子文件夹都有相同的文本文件file.txt
。该文本文件具有以下几行:
text
text
line
line
text text
text text
我试图用 grep 做的是获取单词的总数,text
但从计数中排除text text
单词。
如果我运行,grep -ro "text" folder/ | wc -l | xargs echo "total matches :"
我会得到 12 的计数,但我要查找的结果是 4,因为这两个文件只有两个text
单词,总共有 4 个。
我尝试grep -ro "text" -v "text text" folder/ | wc -l | xargs echo "total matches :"
使用 -v 运行和许多其他语法以text text
从计数中排除但没有成功。
解决方案
使用 awk 更容易实现,简而言之,您想打印(计数)“文本”仅出现一次的行:
- 使用 "text"(-F "text") 作为字段分隔符
- 当“text”是字段分隔符时,打印字段数为 2 的行。
awk -F "text" 'NF==2 { print}' folder/subfolder*/*| wc -l | xargs echo "total matches :"
total matches : 4
推荐阅读
- tensorflow - 向 HuggingFace 的 TFT5ForConditionalGeneration 模型添加样本权重
- c++ - 单击按钮 QT 时将参数传递给函数
- autohotkey - 遇到无法处理自动热键的事件时如何使脚本超时
- c++ - C++中具有不同符号的数量的算术和比较的最佳方法
- html - 铬缩放导致元素失真
- javascript - 如何允许用户使用 Jquery/AJAX 在您的网站中创建/生成新网页?
- reactjs - 使用 prevState 和 useState 钩子更新对象内部数组中的对象
- python - 如何覆盖 Django 上的 ImageField 小部件
- substrate - 将资产托盘集成到节点模板派生链中时导致签名错误的类型问题
- hibernate - Hibernate - 如何在数据库端持久化计算列