linux - 如何打印与特定字符串匹配的所有行?
问题描述
我打算打印所有行及其行号及其在与特定字符串匹配的特定目录中的位置
例子..
/home/some_dir/file.txt -(LineNo) -(printing_thatlineitself)
我目前有 2 个命令,但都有一些缺点
find /home/some_dir -type f -exec grep -Hn "Text To Find" {} \;
上面的这个 find 命令似乎可以正常工作,但问题是它的工作速度很慢
find /home/some_dir -type f -print0 | xargs -0 grep -Hn -C2 "Text To Find"
此命令的运行速度相对较快,但它提供的结果不准确。它甚至打印我输入的字符串根本不存在的那些行
有人可以提供一个准确且快速的解决方案吗?PS /如果解决方案不使用 find 命令来实现这一点,那很好。它必须是我可以直接在 CLI 中运行的东西
解决方案
正如评论中所建议的,可以使用 grep 非常有效地执行此操作
grep -IHnr "Text to find" .
-I : Process a binary file as if it did not contain matching data (to exclude binary files)
-H : Print the filename for each match
-n : Display the matched lines and their line numbers
-r : Recursively search subdirectories listed
"Text to find" : Search string
. : Directory for search (current directory)
推荐阅读
- java - 如何将用户定义的类型参数传递给 Oracle 存储过程
- java - 如何使 JTextArea 自动滚动
- python - 循环遍历字符串列表并删除记录
- python - Matplotlib 在底部显示网格线而不是脊椎
- r - R-- 提取特定文本和随后的文本/数字
- javascript - TypeError:null 不是对象(评估“prevState.intervalTimer”)
- matplotlib - 大型数据集的置信区间
- javascript - MongoDB 和 Node.js 查询具有权重概率的随机值
- html - 导航栏在反应引导中折叠时如何更改导航栏菜单图标
- python - 使用 re 将隐式乘法转换为显式乘法