【问题标题】:grep for argument of a latex commandgrep 用于乳胶命令的参数
【发布时间】:2016-03-11 06:01:48
【问题描述】:

我正在尝试整理乳胶文件中的一些损坏的引用。它们是诸如\cref{ps.1.1} 之类的命令。我想 grep 我的文件并仅获取命令的参数作为输出,在本例中为 ps.1.1。 grep -Po \\\\cref{.*?} my.tex 只给我命令,而不是该行的其余部分,但我还想去掉输出中的 \cref{ 和 },以便我可以遍历它们。

【问题讨论】:

  • 输入和预期输出??
  • 不要使用grep使用awk。
  • (1) 你到底想要什么输出? (“not the rest of the line”是什么意思——你想要剩下的吗?)只是{}的内容?有那个但没有命令本身的行?删除/替换了这些命令的整个文件?您可能想要的东西很多,请指定。 (2) 如果需要,您需要什么工具?严格来说是单行还是脚本?注意grep的主要工作是给你整行。

标签: grep latex


【解决方案1】:

这是一个 Perl 单行,只打印匹配项,包括同一行上的多个匹配项。它会在每场比赛中输出一行,即使是在同一行上的那些,也会在前面加上他们的行号。

perl -nle 'print "$.: $1" while(/\\cref\{(.*?)\}/g)' file.tex

这可能需要并且可以修改,具体取决于您想要的确切输出。

例如,要为同一行上的多个匹配项仅打印一次,请删除 /g 修饰符(删除正则表达式后的 g)。要匹配多个模式,请将它们添加到正则表达式(由| 分隔并由() 分组)并将$2、$3 (...) 添加到print。要查看整行,请将$1 更改为$_。等等。

一个简单的脚本将提供更多的灵活性和处理机会。

【讨论】:

  • perl -nle 'print "$1" while(/\\cref\{(.*?)\}/g)' file.tex 是我的想法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-25
  • 1970-01-01
  • 1970-01-01
  • 2021-10-30
相关资源
最近更新 更多