Kayaking Lifestyle

カヤッキングライフスタイル

シェルをHTMLエディタ以上に使いたおす

   

最近サーバー上でHTMLを書いていることが多い。
最初はローカルで編集してから、SCPでアップの方が良かったが、
慣れてくるとシェルで直接編集が楽になってきた。
とは言っても、複数のファイルの中身を一括で置換したりなどの操作はドリームウィーバーを
使ってしまってた。
しかし、正規表現を用いての文字列の検索、置換にはUNIXに軍配が上がるそうだ。
今もっているDWがCSSの描写に対応してないから、一括置換をするときくらいしか使ってない。
ならば、HTMLコーディングを全部シェルで行って、HTMLエディタ以上に使い倒してやろう。
とは言えまだ初心者なので、使えるTIPSをここにメモります。
hogehogeを検索
オプション -r をつけてディレクトリ以下のファイルを再帰的に検索

拡張子が.htmlのファイルに含まれる文字列、hogeをfooに置換

これだと、置換はされても保存されないので、
元ファイルを.bakにバックアップして、置換処理後の元ファイルに保存する。

実はforコマンドの使い方が良くわかってない・・・
それと、この場合で、ディレクトリ以下から検索、置換の方法がわからない。
この辺を参考にしました。
http://zapanet.info/blog/item/854


forの使い方
for in FILE *.html ………doneは,
*.htmlにマッチするファイルに対して……………を実行するという意味。
マッチしたファイルは環境変数$FILEに代入されるので、………….内では
$FILEで参照する。
> は、リダイレクトで各コマンドの実行結果の出力先を標準出力から >の引き数で指定するファイルに変更するもの。
つまり、
sed -e “s/hoge/foo/g” test.html > test2.html
だと、sedで処理されたtest.htmlはtest2.htmlに出力される。
test2.htmlは存在していないファイルでも、新しく作成してくれる。
ふう、やっとわかった。
やはりsedコマンドだけでは複数ファイルにわたっての置換をして、保存はできないということですね。
それと、上記のコマンドでは*.htmlにマッチしたファイルは全て*.bakとして保存されるので、
*.bakが必要なければ処理をした後で、
rm *.bak
などで削除する。
それでなければ if などを使って条件を絞る。
if の使い方についてはまた今度。
thanks moniosan

 - canoe/kayak