首页 > 解决方案 > 使用文件作为源时修改 grep 搜索

问题描述

当查询源是文件时,尝试使用 grep 输出字符串前的 20 个字符

问题背景:我的文件包含许多长文本行,我正在尝试在该文件中搜索字符串并输出感兴趣的字符串之前的 20 个字符。为此,我使用以下参数grep -E -o ".{0,20}string",当我尝试任何给定的字符串时,它会起作用并给出正确的输出。

我现在面临的问题是尝试将其与-fgrep 中的选项结合起来,因为我有许多查询包含在不同的文件中。

我找不到将 .{0,20} 修饰符添加到我的文本文件中包含的每个查询的正确方法。任何帮助都会很棒。

标签: bashgrep

解决方案


输入示例(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}在每个模式的开头添加。当然,您可以使用其他方法来更新模式文件。


推荐阅读