regex Grep未知的空格数(linux)

ljo96ir5  于 2022-12-30  发布在  Linux
关注(0)|答案(5)|浏览(228)

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

word  -c           (09:35:20)
word     -c        (09:38:49)

如果你运行$ grep "word -c" abc.txt命令,你只能得到第一行,因为1和-c之间的空格数和第二行不匹配。有办法解决这个问题吗?
不能使用grep'word1|word2' /path/to/file,因为word和-c之间的空格不同。

qrjkbowd

qrjkbowd1#

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

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

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

z31licg0

z31licg02#

grep 'word *-c' abc.txt可以工作。我无法使grep 'word +-c' abc.txt工作。

mwecs4sa

mwecs4sa3#

可以将egrep与regex一起使用

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

egrep "word +-c" abc.txt
fkvaft9z

fkvaft9z4#

第一个月
使用单引号,而不是双引号。“+”表示“一个或多个前面的表达式,因此可以找到任意数量的空格(零除外)。”
这里有一个参考:http://www.gnu.org/software/findutils/manual/html_node/find_html/grep-regular-expression-syntax.html

2jcobegt

2jcobegt5#

cat /etc/ssh/sshd_config | egrep -v "^[[:space:]]?+#" | grep -v "^$"

这将删除以#开头的所有行或#之前的所有空格

相关问题