通过unix shell命令从乳胶文件中获取参考书目名称的最有效方法是什么?

时间:2010-06-06 19:40:29

标签: shell tcsh

我正在尝试编写一个编译乳胶源的shell脚本。我希望获取参数文件的名称,该文件包含在如下命令中:

\ {参考书目文件名}

我需要将“filename”保存到shell变量中。我对此的解决方案(在tcsh中)非常令人尴尬:

设置bioliography = grep -v -E "[[:blank:]]*%[[:blank:]]*" poltheory.tex | grep -E "\\bibliography{[A-Za-z0-9_\.]*}" | tail -1 | sed 's/\\bibliography//' | tr -d { | tr -d } | awk '{print $1}'

这打破了:

  1. 不要在乳胶源中显示注释行
  2. 抓住那些包含有效参考书目标记的行
  3. 仅使用最后一个(如果由于某种原因,定义了多个)
  4. 摆脱花括号
  5. 设置shell变量的剩余部分。
  6. 当然,我有一种优雅的方式可以忽略这一点。你能哇我?我已经有了一个工作命令,所以这只是以美女和魔法的名义。

1 个答案:

答案 0 :(得分:1)

规则1:始终使用Bourne系列shell编写shell脚本,而不是csh系列shell。

从.aux文件中提取信息更容易。在这里,我将使用bash的额外功能来切断文件名末尾的.tex:

#!/bin/sh
texfile="$1"
auxfile="${texfile%.tex}.aux"

grep '^.bibdata{' "$auxfile" | sed 's/.*{//;s/}.*//'