我如何编写一个(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 个字符。