はじめに
テキストファイルの結合で一番よく使われるのは、cat コマンドです。
例えば 3 つのファイル A.txt B.txt C.txt を1つのファイル D.txt として出力するには
$ cat A.txt B.txt C.txt > D.txt
とすれば OK です。
しかし、あるファイルの中央に別のファイルをインクルードしたい場合、この方法では実現できません。大掛かりなシステムであれば、テンプレートエンジンを使うなどの方法がありますが、ここでは簡単にできる soelim コマンドを使った方法を紹介します。
soelim コマンドの使い方
soelim コマンドはいろいろなことができるようですが、ここでは一番簡単な使い方だけを紹介します。
例
template.html と content.html があり、 content.html を template.html にインクルードしたいとします。
template.html
<!DOCTYPE html>
<html>
<head>
<title>無題</title>
<meta charset="utf-8" />
</head>
<body>
<!-- この部分に content.html をインクルードしたい。 //-->
.so content.html
</body>
</html>
<body> から </body> の間に別のファイルをインクルードするには、 template.html のインクルードしたい部分に、 .so ではじまるコマンドを記述します。 (当該部分はインデントしていますが、行頭に書くことに注意しましょう。)
content.html
<h1>Hello World</h1>
<p>テストです。</p>
インクルードする内容だけを記述したファイルです。こちらは単に内容だけ記述すれば問題ありません。
soelim をつかってファイルを結合
$ soelim -r template.html > output.html
以下のファイル、 output.html が得られます。
<!DOCTYPE html>
<html>
<head>
<title>無題</title>
<meta charset="utf-8" />
</head>
<body>
<!-- この部分に content.html をインクルードしたい。 //-->
<h1>Hello World</h1>
<p>テストです。</p>
</body>
</html>
もうこれで header.html と footer.html を用意する必要がありません。
注意するポイント
-
soelimが出力するコマンドを消すため-rオプションをつけます。
オプション無しの場合には、.lf 1 ./template.htmlといったコマンドが一緒に出力されてしまいます。 -
soelimは結果を標準出力に出力します。ファイルに出力する場合はリダイレクトする必要があります。