我的问题如下:由于LaTeX的精彩,我经常会遇到行号错误,但没有指出哪个文件被引用:
l.127 \end{table}
是否有一个命令允许我只看到输出行127,例如,对于多个文件(理想情况下是通配符)。
这可能很容易用Python或类似的方式编写,我只是想知道是否有一种简单的方法来使用常见的shell命令。
注意:使用单个文件执行此操作的简单方法是(如下所述)
head -n 127 filename | tail -n 1
但是多个文件失败了。
好的,刚刚意识到bash循环是一个选项:
for i in `ls $1`;
do echo $i; head -n $2 $1 | tail -n 1;
done;
用语法
执行source lineno.sh 127 filenames
答案 0 :(得分:1)
还有awk:
awk 'FNR==127 {print FILENAME ":" $0; nextfile}' *.tex
答案 1 :(得分:1)
像这样采购shell脚本看起来很有趣。使其可执行并运行它:
lineno.sh 127 filenames
当我将这些命令放在.sh
目录中时删除$HOME/bin
,这样我就可以运行:
lineno 127 filenames
脚本不是最佳的;你应该避免像这样使用ls
(如果它们中的任何一个包含空格或其他特殊字符,它会对你的文件名感到沮丧)。
#!/bin/sh
line=${1:?} # Complains if there is no $1 or if it is an empty string
shift
for file in "$@"
do
echo "$file";
head -n $line "$file" | tail -n 1
done
我可能会加强参数检查(报告正确的用法,坚持至少第二个参数),但它会合理地工作。