如何在多个文件中重复显示图案,同时排除注释行

时间:2019-02-05 16:01:34

标签: regex grep

我有一堆LaTeX文件,我想使用grep pattern *.tex -n --color=always搜索。重要的是我要看到:

  1. 匹配的文件名
  2. 比赛的行号
  3. 整行,突出显示匹配的模式

此外,有时模式需要完全匹配,因此命令变为grep pattern *.tex -n -w --color=always

我想修改此命令以排除我的*.tex文件中以%字符开头的注释行。我对评论中的比赛不感兴趣。

这可能吗?

2 个答案:

答案 0 :(得分:1)

也许您可以尝试以下命令:

grep -n -v --color=always '^%' *.tex | grep content

EXPLANATION

  • 第一个grep调用排除以-v开始的(%)行(正则表达式^%与行首的%匹配({{1 }})
  • 第一个^调用的输出作为输入传递给第二个grep调用
  • 第二次grep调用仅包括与过滤器模式匹配的行(如果需要,可以添加grep选项)。

希望这对您有帮助!

答案 1 :(得分:0)

这会吗?首先是一些测试内容:

$ cat file
yes
no % yes commented out
yes % yes before comment
no
noyes
furthermore yes
furthermore yes% yes
furthermore no% yes

grep:

$ grep -Hn "^[^%]*\(^\| \)yes\( \|$\|%\)" file
file:1:yes
file:3:yes % yes before comment
file:6:furthermore yes
file:7:furthermore yes% yes

修改:部分匹配:

$ grep -Hn "^[^%]*yes" file 

并仅突出显示您需要再次为其重复的搜索词:

$ grep -Hn "^[^%]*yes" file | grep yes
file:1:yes
file:3:yes % yes before comment
file:5:noyes
file:6:furthermore yes
file:7:furthermore yes% yes