使用grep,我可以在文件中搜索某些内容并获取包含字符串的行而不是包含其他文本的其他行吗?在下面的例子中(作为简化)我想用password =而不是password = [:alnum:]打印行。我不知道该怎么做。我有点需要grep,因为我实际上捕获的不仅仅是这一行,而是我从我的问题中排除了这个更大的命令。
带数据的文件:
password = Mike
password = Jessica
password =
password = Sofi
password = Maya
password =
打印:
password =
password =
答案 0 :(得分:1)
您可以使用$
(行尾)确保没有其他文字:
grep '^password =\s*$' file
答案 1 :(得分:1)
grep -F -x 'password =' file
-F
是一个小调整,可以禁用正则表达式匹配,只匹配文字字符串。 -x
指定整行必须匹配。
答案 2 :(得分:0)
您可以将正则表达式与egrep一起使用,并将匹配项反转为-v
:
grep -E -v 'password = \S+' file
答案 3 :(得分:0)
将grep与扩展正则表达式一起使用(请注意,egrep
已弃用):
grep -E '=\s*$' file
这确保在等号后,在行尾之前只有空格。
或者,假设它们都是空格字符(例如,没有标签):
grep '= *$' file
您还可以使用POSIX空白字符类:
grep '=[[:space:]]*$' file
如果您还需要确保“密码”一词也在线上:
grep -E 'password\s*=\s*$' file