Grep 试图弄清楚我的regex命令为什么获胜';行不通

Grep 试图弄清楚我的regex命令为什么获胜';行不通,grep,Grep,我有一个问题要处理,想知道为什么我的正则表达式不能工作。匹配包含顶行的文本词典中的单词是一个简单的练习。我相信我有一个解决方案,但grep每次都会一无所获: grep ^[qwertyuiop]+$ /opt/~~~~~~/data/web2 这是我的命令,它什么也不做,但如果我只是说: grep [qwertyuiop] /opt/~~~~~~/data/web2 它将单词与第一行的字母匹配。有人能告诉我为什么它不起作用吗?谢谢大家抽出时间。我认为格雷普自己无法识别^$或+。您必须使用gr

我有一个问题要处理,想知道为什么我的正则表达式不能工作。匹配包含顶行的文本词典中的单词是一个简单的练习。我相信我有一个解决方案,但grep每次都会一无所获:

grep ^[qwertyuiop]+$ /opt/~~~~~~/data/web2
这是我的命令,它什么也不做,但如果我只是说:

grep [qwertyuiop] /opt/~~~~~~/data/web2

它将单词与第一行的字母匹配。有人能告诉我为什么它不起作用吗?谢谢大家抽出时间。

我认为格雷普自己无法识别
^
$
+
。您必须使用
grep-e
egrep
来使用这样的特殊字符

您已经非常接近了。 对于grep,您希望使用
-x
标志来匹配整行

grep -x '[qwertyuiop]\+' /usr/share/dict/american-english
然后使用一个简单的转义
+
来匹配多个字符

如果您想避免使用-x,您可以采用以下原始方法:

grep '^[qwertyuiop]\+$' /usr/share/dict/american-english

有了转义和一些引号,它工作得非常好,尽管我认为
-x
更为惯用,正如其他一些人所评论的那样,您也可以使用
-e
,尽管这可能会产生一些意想不到的后果。我推荐
mangrep
,它提供了一个很好的概述。

您只需要一个转义。将
-E
添加到
grep
命令中。