如何用-n grep -o

时间:2017-11-22 08:39:33

标签: linux grep

我有两个不同的greps,如下面

grep -on "\w*_text1 \w*" test.log
grep -n "text2"  test.log

如何将它们组合成一个?

基本上,我必须打印包含_text1的字词和包含text2的字词

预期结果:

1:地址的 _text1

2:12:53:32.087 INFO .... - 保存 text2

3:电话的 _text1

4:12:53:33.087 INFO .... - 正在更新 text2

2 个答案:

答案 0 :(得分:2)

假设你只想要综合结果,这应该做:

grep -on "\w*_text1 \w*\|.*text2.*" test.log

说明:

  • 这两种模式已与\|合并。
  • 第二个模式被.*包围,以匹配整行;这有效地禁用了该特定模式的-o

示例输出:

$ cat test.log
not this
begin foo_text1 bar end
and not this
hello text2 bye
finally not this

$ grep -on "\w*_text1 \w*" test.log
2:foo_text1 bar

$ grep -n "text2"  test.log
4:hello text2 bye

$ grep -on "\w*_text1 \w*\|.*text2.*" test.log
2:foo_text1 bar
4:hello text2 bye

答案 1 :(得分:0)

使用逻辑OR:

grep -onE "_text1|text2" test.log