Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Grep未知空间数(linux)_Regex_Grep - Fatal编程技术网

Regex Grep未知空间数(linux)

Regex Grep未知空间数(linux),regex,grep,Regex,Grep,假设您有一个名为abc.txt的文件-该文件包含2行(通常更多)行: 如果运行命令$grep“word-c”abc.txt,则只会得到第1行,因为1和-c之间的空格数与第2行不匹配。有办法解决这个问题吗 不能使用grep'word1 | word2'/path/to/file,因为word和-c之间的空格不同。grep'word\+-c'abc.txt 使用单引号,而不是双引号。“+”表示“前面的一个或多个表达式,因此可以找到任意数量的空格(零除外) 这里有一个参考:使用+正则表达式字符,它将至

假设您有一个名为abc.txt的文件-该文件包含2行(通常更多)行:

如果运行命令
$grep“word-c”abc.txt
,则只会得到第1行,因为1和-c之间的空格数与第2行不匹配。有办法解决这个问题吗


不能使用
grep'word1 | word2'/path/to/file
,因为word和-c之间的空格不同。

grep'word\+-c'abc.txt

使用单引号,而不是双引号。“+”表示“前面的一个或多个表达式,因此可以找到任意数量的空格(零除外)


这里有一个参考:

使用
+
正则表达式字符,它将至少匹配前面的一个字符:

grep -E "word +-c" abc.txt

此正则表达式的内容为“匹配'word',后跟一个或多个空格,后跟'-c'。

grep'word*-c'abc.txt将正常工作。我无法让grep'word+-c'abc.txt正常工作。

您可以将egrep与正则表达式一起使用

egrep "word\s+-c" abc.txt


“抓取正确的文件”是什么意思?请给我们展示一个示例以及预期的输出?我的意思是抓取所有表示“word”的字符串,后跟未知数量的空格(没有其他内容),然后“-c”@user2619315尝试使用
-E
开关(我已经修改了答案)。有些grep需要这个来将未转义的
+
解释为元字符。也许您需要egrep,或者grep-E。
egrep "word\s+-c" abc.txt
egrep "word +-c" abc.txt