はじめに
テキストファイルの結合で一番よく使われるのは、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
は結果を標準出力に出力します。ファイルに出力する場合はリダイレクトする必要があります。