通过命令行将多行文本插入到多个文件中

通过命令行将多行文本插入到多个文件中

我想将一些代码插入到一个目录中的多个tex文件中foo*.tex,在\documentclass{.*}.请注意,这些文件具有不同的文档类,因此.*这里只是一个符号占位符。

该代码有多行,例如

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{ngerman}

自动执行此操作的最佳方法是什么?

答案1

一种使用方法GNU sed

内容script.sed

/^\\documentclass[^{]*{[^}]*}/ {
    a\
\\usepackage[utf8]{inputenc}\
\\usepackage[T1]{fontenc}\
\\usepackage{ngerman}
}

像这样运行它:

sed -s -i.bak -f script.sed foo*.tex

我用来^匹配documentclass行开头的 。如果前面可以有空格,请将其删除。

交换机-s将每个输入视为不同的文件,并-i创建带有bak扩展名的备份。

答案2

下面的 shell 脚本应该可以做到这一点

#!/bin/sh
sed '
/\\begin{document}/ a\
\\usepackage[utf8]{inputenc}\
\\usepackage[T1]{fontenc}\
\\usepackage{ngerman}
' $1

只需使用您的文件作为输入调用脚本(一一)

相关内容