此命令将找到其中包含字符串'PARTICULAR ='的任何文件
grep -r --include=\*.log 'PARTICULAR*=' *
这是我得到的结果:
foo/bar.log:PARTICULAR=gfgfgfgkl5dfgfgf
foo/bar.log:PARTICULAR=
foo/bar.log:PARTICULAR=56945674454rgfgfg
foo/bar.log:PARTICULAR=
foo/bar.log:PARTICULAR=kjdghfidfgh4545454
注意在PARTICULAR =之后的空格
如何编辑命令以仅在PARTICULAR =之后紧接文本后才输出?
我尝试过
grep -r --include=\*.log 'PARTICULAR*=' * | sed 's/^.*: //'
但是我得到了相同的结果(但是命令运行得更快了吗?)
答案 0 :(得分:1)
可以请您尝试以下操作:
grep -r --include=\*.log 'PARTICULAR*=' * | awk -F'=' 'match($0,\/foo\/bar.log:PARTICULAR=[a-zA-Z]+/)'
OR
grep -Er --include=\*.log '\/foo\/bar.log:PARTICULAR*=[a-zA-Z]+' *
答案 1 :(得分:1)
您可以使用.
来表示任何字符:
$ grep '^PARTICULAR=.' bar.log
PARTICULAR=gfgfgfgkl5dfgfgf
PARTICULAR=56945674454rgfgfg
PARTICULAR=kjdghfidfgh4545454
^
确保匹配从行的开头开始(即不是ANDINPARTICULAR=foo
),缺少*
是为了避免匹配PARTICULA=foo
和{{1 }},您的PARTICULARRRRRRR=foo
将允许。
答案 2 :(得分:1)
经过修改的正则表达式应为您提供所需的结果。
grep -rE --include=\*.log 'PARTICULAR*=.+' *
.
匹配任何字符,而+
表示=
之后至少有一个字符。
注意:由于+
运算符是扩展正则表达式的一部分,因此需要添加-E
标志。
答案 3 :(得分:1)
grep -rE --include=\*.log -o "PARTICULAR*=\w+"
基于您包含的输出,您现在应该获得:
$> grep -rE --include=\*.log -o "PARTICULAR*=\w+"
foo/bar.log:PARTICULAR=gfgfgfgkl5dfgfgf
foo/bar.log:PARTICULAR=56945674454rgfgfg
foo/bar.log:PARTICULAR=gkjdghfidfgh4545454