目次 に戻る

sed & bash try example 001

文字列の 変更

file name: shsc0011.sh

注意

今回 css を 変更したので それに 対応 させるために 簡易の shell script を 作成した まず ファイルの 変更する 事柄の 抜き出し

<p><span class="sml01"><a href="index.html">目次  に戻る</a></span></p>
     |
     v
<p class="small rightf"><a href="index.html">目次 に戻る</a></p>

<p><span class="sml01"><a href="index.html">目次 に戻る</a></span></p>
     |
     v
<p class="small rightf"><a href="index.html">目次 に戻る</a></p>

<address >Copyright © 2005. <a href="mailto:mm@nyanta.no-ip.info">nyanta</a> All Rights Reserved.</address>
     |
     v
<address class="centf" >Copyright © 2005. <a href="mailto:mm@nyanta.no-ip.info">nyanta</a> All Rights Reserved.</address>

<span class="sml01">
     |
     v
<span class="small">

これらは css での 文字の 大きさの 指示語句 が sml01 から small に 変 更 するのと 現在 通常の 左側に 行き先 表示が してあるのだが これを 右寄 せに する 又、 address に 関しては 中央に 寄せる 変更を 行う。
それ に 対応させる sed の 構文は それぞれ

$ sed -e 's/<p><span class=\"sml01\"><a href=\"index\.html\">目次  に戻る<\/a><\/span><\/p>/<p class=\"small rightf\"><a href=\"index\.html\">目次 に戻る<\/a><\/p>/g' 0001sndmailog.html >kk

$ diff -s 0001sndmailog.html kk
13c13
< <p><span class="sml01"><a href="index.html">目次  に戻る</a></span></p>
---
> <p class="small rightf"><a href="index.html">目次 に戻る</a></p>

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

$ sed -e 's/<p><span class=\"sml01\"><a href=\"index\.html\">目次 に戻る<\/a><\/span><\/p>/<p class=\"small rightf\"><a href=\"index\.html\">目次 に戻る<\/a><\/p>/g' 0001sndmailog.html >kk
$ diff -s 0001sndmailog.html kk 
197c197
< <p><span class="sml01"><a href="index.html">目次 に戻る</a></span></p>
---
> <p class="small rightf"><a href="index.html">目次 に戻る</a></p>

~~~~~~~~~~~~~~~~~~

$ sed -e 's/<address >/<address class=\"centf\" >/' 0001sndmailog.html >kk
$ diff -s 0001sndmailog.html kk 
199c199
< <address >Copyright © 2005. <a href="mailto:mm@nyanta.no-ip.info">nyanta</a> All Rights Reserved.</address>
---
> <address class="centf" >Copyright © 2005. <a href="mailto:mm@nyanta.no-ip.info">nyanta</a> All Rights Reserved.</address>

~~~~~~~~~~~~~~~~~~~~~~~~~~~~

$ sed -e 's/span class=\"sml01\"/span class=\"small\"/g' 0001sndmailog.html >kk
mm@lx:/var/data/www/apache2/htdocs/1001_base/1002_net/4001_log/4004_sndmail$ diff -s 0001sndmailog.html kk 
185c185
< <p><span class="sml01"><a href="#up">上に</a></span></p>
---
> <p><span class="small"><a href="#up">上に</a></span></p>
189c189
< <span class="sml01">
---
> <span class="small"> 

日本語の部分が 2個 有るのは スペースの 個数が 異なるので 2回 対応し ないと うまく行かないと 言う事である これを shell script に してみよう

悪い 見本

これは 実行 しては 行けません ファイルが つぶれます

$ cat badbad_shsc0011.sh
#!/bin/sh

# file name badbad_shsc0011.sh
echo -n "Please input CHR del file = "
read FILE

cat $FILE | sed -e 's/<p><span class=\"sml01\"><a href=\"index\.html\">目次  に戻る<\/a><\/span><\/p>/<p class=\"small rightf\"><a href=\"index\.html\">目次 に戻る<\/a><\/p>/g' 0001sndmailog.html >kk

mv kk $FILE

cat $FILE | sed -e 's/<p><span class=\"sml01\"><a href=\"index\.html\">目次 に戻る<\/a><\/span><\/p>/<p class=\"small rightf\"><a href=\"index\.html\">目次 に戻る<\/a><\/p>/g' 0001sndmailog.html >kk

mv kk $FILE

cat $FILE | sed -e 's/<address >/<address class=\"centf\" >/' 0001sndmailog.html >kk
mv kk $FILE
cat $FILE | sed -e 's/span class=\"sml01\"/span class=\"small\"/g' 0001sndmailog.html >kk

mv kk $FILE

これは この 変更する ファイルに 名前が kk と言う物が 有れば 成り立た ないが 幸いにも この 場所には 無いので 限定使用は 可能で有るようである。
注意事項として

エスケープ したのは " .  @ 3個 のみ < > = は 其まま としている

全てに 対応させる事情には行かないようである 特に 今回 日本語が 含まれ ている のに 対して 有効であることは みっけもの である。 課題としては 同 じ ディレクトリ 内で有れば 一々 ファイル名を 入力 しないでも 行ける 様に する事が 望ましい 此処までは 出来るようにしよう 但し、変更の 項目に 関し ては そのつど 入れ換えるのが 必要である。 悩ましいが 作成 方法が 悪かっ たのだから 仕方が ないでしょう!

これで 行けると 思ったが 注意深く 見てると 何を 馬鹿な事を ということ です 全てのファイルが 1種類に なるのです 残念 にゃんたろうは 貴重な(で もないが)ファイルを 失いました 。 馬鹿丸出しです。このままでは 使いもん に なりません。

rcover

昔から バックアップを 取っておく のが 大切 ということで バック アップ から 復旧を 試みます。それは 良いとして 最終の shell script を 以下に 示 します、あくまでも 暫定 或 領域 内部での 有効な 物です。

$ cat shsc0011.sh 
#!/bin/sh

# file name shsc0011.sh
echo -n "Please input CHR del file = "
read FILE

cat $FILE | sed -e 's/<p><span class=\"sml01\"><a href=\"index\.html\">目次  に戻る<\/a><\/span><\/p>/<p class=\"small rightf\"><a href=\"index\.html\">目次 に戻る<\/a><\/p>/g' $FILE >kk

mv kk $FILE

cat $FILE | sed -e 's/<p><span class=\"sml01\"><a href=\"index\.html\">目次 に戻る<\/a><\/span><\/p>/<p class=\"small rightf\"><a href=\"index\.html\">目次 に戻る<\/a><\/p>/g' $FILE >kk

mv kk $FILE

cat $FILE | sed -e 's/<address >/<address class=\"centf\" >/' $FILE >kk
mv kk $FILE
cat $FILE | sed -e 's/span class=\"sml01\"/span class=\"small\"/g' $FILE >kk

mv kk $FILE

御粗末で ございました。

にゃんたろう 拝!
2005年10月11日 (火) 21:48:09 JST 作成


目次 に戻る


Copyright © 2004.-2007. nyantarou All Rights Reserved.