More from: 改行コード

EdMaxで添付ファイルがデコードできない

フリーのメーラー「EdMax Free」を使っていて時折添付ファイル付きのメールのデコードが出来ないことがある。
先日もその件で相談を受けたのだけど、見るときちんとデコードされず本文中にエンコードされた文字列が並んでいる。
ファイル名の文字コードがutf-8となっているので、探して見付けた「EdMimeDecode」というプラグインを試したが結果は変わらず。
うーん、どうしたものか・・・

この「EdMimeDecode」というプラグインはメール本文の表示時に動作し、改行コードがCR+LF以外(CRのみorLRのみ)の場合にはCR+LFに変換してMailbox中に書き戻してくれるようでその際にちょっと動作が重くなるが、改行無し(に見える)メールがきちんと改行されて読みやすくなるので、その点では有効だと思われる。

←クリックしてくれると嬉しいです。

”\r\n”だったか(汗)

テキストエディタとして「サクラエディタ」を使っている。
時々”特定の文字列を含む行を削除したい”ということがあるが、なかなかうまくいかなかった。
どうしてもやらなければならない時は検索で文字列をマークして、手作業で消していたが数が多くなると大変。
もちろん正規表現を使ってヌル文字列との置換も試してはいたが何故かうまくいかなかった。
ググってみると解決法がすぐ見つかったのだけど、やり方は私が試していたのと同じく、

・検索メニューで”置換”を選択。
・検索文字列に”.*hoge.*\r\n”を入力。
・置換文字列には何も入力しない。
・全て変換ボタンを押す。
となっている。
※”\r”はCR(キャリッジリターン)、”\n”はLF(ラインフィード)の意。

試しにこれをやってみてもやはり1行も置換されないorz
おかしいな?と思って自分で入力した検索文字列をよく見ると、
”.*hoge.*\n\r”
となっていて、改行コードが違っていた(汗)。
たしかにサクラエディタの右下に表示されている改行コードは”CRLF”となっている。
これでは\n\r(LFCR)では検索できないので当然置換も出来ないわけだ(汗)。
改行コードを\r\nに変えたら見事に目的の文字列を含む行がきれいに消えてくれたよ。
ちなみに、Windowsのテキストファイルの改行コードは基本的にCRLFだけど、UNIX系OSの場合はLFのみ、Mac系のOSではCRのみというのが一般的で、サクラエディタではどの改行コードでも扱うことが出来る。
なので、扱うファイルによって改行コード部分を変更する必要はあるけど、やっと目的のことが出来るようになったよ。

←クリックしてくれると嬉しいです。

改行コードを揃えて解決

昨日、「”grep”で行の完全一致を見つける」という記事を書いた。
その後少々検討した結果、改行コードをWindows(CR+LF)に揃えることで解決した。
実際に改行コードが異なるファイルで検証してみると”-x”オプションを付けると不一致とみなされたが、揃えると(当然だが)一致とみなされたのでWindows上での扱いを考えてCR+LFに統一した。
そもそも改行を何故LFのみにしていたのか思い出せ無いが、とりあえず上手くいったので良しとしよう(汗)。

←クリックしてくれると嬉しいです。

”grep”で行の完全一致を見つける

Linux上でファイル操作をしていて、あるファイルの中から別のファイルにある行と一致する行を取り除きたい。
単純に考えると
#grep -v -f hoge.txt gesho.txt
で出来るんだけど、この場合はhoge.txtのとある行を”含む”行が全て取り除かれてしまう。
例えばgesho.txtの中身が
“This is a pen”
“This is a pencil”
の2行だったとして、hoge.txtに
“This is a pen”
があると2行とも取り除かれてしまう。
そこで、行の完全一致のオプション”-x”を付けて
#grep -v -x -f hoge.txt gesho.txt
とすれば解決・・・の筈だったんだけど、実際には一致する行が無いと判断されてしまった。
理由はhoge.txtとgesho.txtで改行コードが異なっていた為orz。
Windows上で扱う関係でgesho.txtはCR+LFでないと困るが、反対にhoge.txtはLFである必要があって統一できない。
さて、どうするかなぁ?(汗)

grepに渡す時だけ”dos2unix”で改行コードを変換して、終わったら元に戻すのが簡単かな?

←クリックしてくれると嬉しいです。

改行コードか!

Linuxファイルサーバ上のテキストファイルを操作していて特定の文字列を取り除きたかった。
そこで
grep -v -f aaa.txt bbb.txt
を実行したところがaaa.txtに書いてある文字列がbbb.txtに残ってしまう。
エディター上で文字列を見比べてもタイプミスは見当たらない。
おかしいなぁ、と思ってgrepのヘルプを見て思いついたのが改行コード。
ファイルの作成&編集はWindows10上で行っているので改行コードはCR+LF。
Linuxでは通常LFのみなので試しにaaa.txtの改行コードをLFだけにしてみたらうまくいった(bbb.txtはそのままでもOKだった)。
未だにこんなことで悩まなくてはならないなんて私もまだまだだな(汗)。

←クリックしてくれると嬉しいです。