我想将一些代码插入到一个目录中的多个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
只需使用您的文件作为输入调用脚本(一一)