Grep 正则表达式不再为我工作

Grep 正则表达式不再为我工作

抱歉,如果这个问题有点不合时宜,但我刚刚开始学习 Linux 2 天,我自己并没有任何知识来解决这个问题。我正在尝试grep使用这个水果列表的命令这里一切都很顺利,直到我继续尝试这个/表达方式。

我想我按下了某种带有下划线的组合键,现在大多数正则表达式似乎都混乱了(文件名现在带有下划线,如果这在任何方面都很重要的话)。例如当我输入:

cat fruits | grep ^ma

我没有得到任何结果,mandarinemango没有出现。

当我输入:

cat fruits | grep dam*

或者

cat fruits | grep dam

Damson没有出现。最重要的是,终端右侧有一个错误十字:

在此输入图像描述

谁能简单地解释一下如何让它再次工作?多谢!

答案1

正则表达式区分大小写。您的文件包含Mandarine大写字母M,但您正在搜索以 开头的行ma。尝试这个:

grep '^Ma' fruits

另请注意,我已将正则表达式 (RE) 放在单引号中。这会阻止 shell 尝试将其测试为应该处理的单词 - 例如,通过将其与当前目录中的文件进行匹配。

如果您想要不区分大小写的比较,请使用grep -i.例如,

grep -i 'ma' fruits

答案2

您可能因意外的击键组合而破坏了 bash 或 dash shell。 Bash 及其对应的 shell(例如 dash)是高度可配置的程序,可以将您键入的内容转换为内核可以理解的内容。

大多数配置都是通过 完成的/home/user/.bashrc,但有许多动态修改只需要组合键即可。通常,如果关闭终端窗口,这些修改将被重置。

source .bashrc在某些条件下,也可以用于重置。看https://linuxhandbook.com/source-command/

相关内容