-1

我的问题如下:由于 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
4

2 回答 2

1

还有awk:

awk 'FNR==127 {print FILENAME ":" $0; nextfile}' *.tex
于 2013-04-16T18:10:17.610 回答
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

我可能会加强参数检查(报告正确的用法,坚持至少第二个参数),但它会合理地工作。

于 2013-04-16T18:27:17.177 回答