Regex Grep未知空间数(linux)
假设您有一个名为abc.txt的文件-该文件包含2行(通常更多)行: 如果运行命令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 使用单引号,而不是双引号。“+”表示“前面的一个或多个表达式,因此可以找到任意数量的空格(零除外) 这里有一个参考:使用+正则表达式字符,它将至
$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