bash - 使用文件作为源时修改 grep 搜索
问题描述
当查询源是文件时,尝试使用 grep 输出字符串前的 20 个字符
问题背景:我的文件包含许多长文本行,我正在尝试在该文件中搜索字符串并输出感兴趣的字符串之前的 20 个字符。为此,我使用以下参数grep -E -o ".{0,20}string"
,当我尝试任何给定的字符串时,它会起作用并给出正确的输出。
我现在面临的问题是尝试将其与-f
grep 中的选项结合起来,因为我有许多查询包含在不同的文件中。
我找不到将 .{0,20} 修饰符添加到我的文本文件中包含的每个查询的正确方法。任何帮助都会很棒。
解决方案
输入示例(input.txt):
ezfnzjnefnzefnz
ezenfjznefnkz123hello
enzjfzeknzkabcworld
fzebkfzbejkfbzk
模式文件示例(pattern.txt):
hello
world
命令 :
grep -Eo -f <(sed 's/^/.{0,3}/' pattern.txt) input.txt
输出 :
123hello
abcworld
sed 命令只是.{0,3}
在每个模式的开头添加。当然,您可以使用其他方法来更新模式文件。
推荐阅读
- maven - Maven 万无一失的测试 - 包括和排除
- postgresql - 在 Postgres 中加入和组合表以将特定列中的公共行放在一起
- c++ - 使用CMake创建可以在其他机器上独立运行的可执行文件
- php - 刀片视图不反映更改
- docker - Docker 映像无法运行 docker-entrypoint.sh,但仅在从 Docker Hub 运行时?
- javascript - 更改随机 div 的颜色
- android - 当应用程序具有 MediaBrowserService 时,Videoview 窃取媒体按钮事件
- asynchronous - Kotlin 延续没有恢复
- c++ - 模板类中的 C++20 类外定义
- python-3.x - 删除熊猫数据框中的列