取締役 平社員 ブログ (ベータ版)

パソコン ( PC ) を安全に使えるような何かごとを徒然と書いてみたいと思います。  

 -無責管理

   当ページ記事により不具合、問題が発生した場合でも責任をもちません。


   情報セキュリティ系勉強会ポータルサイト  

  セキュリティ・キャンプ  (セキュリティ・キャンプ実施協議会)   Firefox ブラウザ無料ダウンロード 



続・アマゾンさんの「お支払い番号をお送りします」メール


まだ、改行コードの件が直っていないみたいです。本文が一行になります。


携帯電話へ転送する際に、いちいち手で改行を挿入するのも面倒なので、サクッとなんとかしたいと思い、ちょっと加工してみるテスト。


まず、素直にテキストエディターで開いてみます。


Windows 付属の Notepad.exe (メモ帳) では、やっぱり改行無しの一行に連続表示されてしまいます。


では、秀丸エディタでは? と開くと、一見良い感じに改行を挿入してはくれます。


が、Content-Type: 記載の文字コード(Shift_JIS) で開いているにもかかわらず、一部分文字化け↓します。


(図1)

秀丸エディタで LF→CR+LF 変換。
秀丸エディタで LF→CR+LF 変換。

(画像サイズ 89KB、クリックで拡大 164KB)


・・・


バイナリーエディターでメールボックスファイルをいじるのは面倒くさすぎるので、ちょっと BAT を作ってみましょう。


日本IBM http://www.ibm.com/developerworks/jp/linux/library/l-tiptex5/
> ヒント: trを使ってファイルをフィルターにかける


上記ページには、awk の例↓が載っています。


awk '{ print $0"\r" }' < unixfile > dosfile


これを元にunix toolawk を使うと、こんな感じ↓になりました。


(図2)

awk で LF→CR+LF 変換。
awk で LF→CR+LF 変換。

(画像サイズ 66KB、クリックで拡大 104KB)


本文は OK なんですが、残念ながらヘッダーに改行が追加された結果、Subject: 行などをメーラーが認識していません。


使ったコマンド等は以下の通りです。


実行 BAT コマンド:


awk -f LF.mbx.awk < LF.mbx > CR-LF.mbx


LF.mbx.awk の内容:


{ print $0"\r" }


※ ( CMD.exe / COMMAND.com でなく) bash 使ったら? と云うツッコミはこの際なしと云うことでお願いします。(w


・・・


では、続いて sed では? とやってみます。


日本IBM http://www.ibm.com/developerworks/jp/linux/library/l-sed3/
> 共通テーマ: 実例でわかるsed: 第3回


上記ページには、sed の例↓が載っています。


sed -e 's/$/\r/' myunix.txt > mydos.txt


手元でちょっと変更してやってみますと、こんな感じ↓でした。


(図3)

sed で LF→CR+LF 変換。
sed で LF→CR+LF 変換。

(画像サイズ 72KB、クリックで拡大 114KB)


ヘッダーに改行が追加されても認識しています。ちょっと間延びしてますがまあ、これで良いですか。(w


メッセージボディーとヘッダーを別々に処理しろなんて面倒くさすぎます。

(ところでアマゾンさんもテキスト形式メール送信でお願いしているのに、<br> <br> なんてのが見えるあたり、なんかバグってますよねぇ。)


使ったコマンド等は以下の通りです。


実行 BAT コマンド:


sed -f LF.mbx.sed < LF.mbx > CR-LF.mbx


LF.mbx.sed の内容:


s/$/\ /


何故か "\r" を認識してくれなかったので "\ " (後ろにスペースあり。)にしています。(w 末尾にスペースが追加され、そのあとに CR+LF が( Windows により)自動で補完されます。


ちなみに、本来正しいハズの、


s/$/\r/

とすると、各行末尾に漏れなく英小文字の r が添付されてきます。



s/$/\/

とすると、Syntax Error (メッセージは sed: file LF.mbx.txt.sed line 1: Unterminated `s' command) になりますので、\ は効いているものと思われます。



s/$/\\r/

とすると、各行末尾に漏れなく英小文字の "\r" 二文字が添付されてきます。


(おまけ)

awk の場合、コマンドを以下に変更すると、上記 sed と同じ結果になることを確認済みです。


LF.mbx.awk の内容:


{ print $0" " }

※ "\r" の代わりに " "。(w


それにしてもナツカシイ。


tr '\r' '\n' < macfile > unixfile

とか、


tr -d '\r' < dosfile > unixfile

とかも知っておくと役に立つかもしれません。


いじょうです。

    • -