Bash

通過命令行將多行文本插入多個文件

  • May 1, 2012

我想在一個目錄中的多個tex文件中插入一些程式碼,在. 請注意,這些文件具有不同的文件類,因此這裡只是一個符號佔位符。foo*.tex``\documentclass{.*}``.*

程式碼有多行,例如

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

自動執行此操作的最佳方法是什麼?

一種使用方式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

下面的shell腳本應該這樣做

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

只需使用您的文件作為輸入呼叫腳本(一個接一個)

引用自:https://unix.stackexchange.com/questions/37686