编写一个脚本,输出包含特定文本的文件名和行号

编写一个脚本,输出包含特定文本的文件名和行号

我如何编写一个(bash)脚本来扫描文件夹中所有 .tex 文件以查找 的出现\todo,并输出它出现的文件名和行号?

我目前得到的:

#!/bin/bash
for texfile in *.tex ; do
  **Scan for \todo**
  **output $textfile$ , linenumber**
done

我想确保\todo{sometext} 当我交付我的 .tex 文件时它们不包含任何内容。

不一定非要使用 bash,我选择它只是为了简单。Grep 等肯定会受到欢迎。

答案1

grep可以自行完成此操作,如果需要,您可以将其包装在脚本中:

grep -nr '\todo' *.tex

-r递归 -n显示文件中的行号

默认情况下,grep 将显示包含匹配项的行。对于某些格式,这可能意味着大量的输出。如果您想限制输出,以便只获得匹配项和两边的几个字符,请使用以下命令:

egrep -nor '.{0,20}\\todo.{0,20}'  *.tex

的意思-o是“仅显示匹配结果”,但是,这将仅显示\todo。为了获得一些上下文,我们允许匹配的两边最多有 20 个字符。匹配.任何内容,重复{0,20}此匹配最多 20 个字符。

相关内容