【问题标题】:Grep from pattern file to search in directory not workingGrep 从模式文件中搜索目录不起作用
【发布时间】:2017-06-01 17:10:02
【问题描述】:

我有一个名为“optionsList.txt”的 txt 文件,其中包含以下行:

00201205CA2A421F99B7E0E0B332921C
00AAFF650E9F42B987679AB21F1A5F0F
015CF25A44D047398E96A0BD7A06939E
00201205CA2A421F99B7E0E0B332921C
00AAFF650E9F42B987679AB21F1A5F0F
015CF25A44D047398E96A0BD7A06939E
016F0DFB04A24B5B92E50079CB15ADC7
022F3506A50F451682881080B31F9067
....

我正在尝试使用 grep -F -f 在目录“./Options/”中查找匹配项

编辑:这是我正在使用的命令(抱歉之前没有包含它):

grep -nr -Ff optionsList.txt  ./Options/

但是 grep 什么都没有。

当我使用普通模式时 grep

grep -nr 00AAFF650E9F42B987679AB21F1A5F0F ./Options/

我确实看到了正确的结果,例如:

./Options/ReportOptions.log.25:100331:2017/01/06 04:02:37.479 [7420] 00AAFF650E9F42B987679AB21F1A5F0F: Report.ExecuteJob Start
./Options/ReportOptions.log.25:100348:2017/01/06 04:02:38.988 [7420] 00AAFF650E9F42B987679AB21F1A5F0F: ExecuteAtOnce Before Call

为什么我的 grep 命令对模式文件不起作用?

【问题讨论】:

  • 你试过什么命令?你知道叫哪个 grep 吗?
  • 很抱歉。我更新了问题以包含我正在使用的命令。
  • 您能否检查模式文件中是否没有不可打印的字符:cat -vte optionsList.txt | head
  • 只是一个想法,它与 Nahuel 的方向相同:optionsList.txt 是来自另一个具有不同 lineending 约定的操作系统吗?
  • 是的,它是在 Windows 中创建的。并使用 cat -vte optionsList.txt | head 命令我现在可以看到每行末尾似乎有一些“^M$”字符

标签: bash grep


【解决方案1】:

在 unix 上有一个实用程序可以删除字符 13、'\r' 或 ^M。

语法可能不同

dos2unix optionsList.txt
dos2unix optionsList.txt optionsList.txt

【讨论】:

    猜你喜欢
    • 2019-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    • 2017-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多