Bash
通過命令行將多行文本插入多個文件
我想在一個目錄中的多個
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
只需使用您的文件作為輸入呼叫腳本(一個接一個)