LoginSignup
12
12

More than 5 years have passed since last update.

テキストファイルのインクルードには soelim が便利

Last updated at Posted at 2015-03-05

はじめに

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
12