@・ェ・)やるっきゃない このページをアンテナに追加 RSSフィード

2011-02-16

[Linux]改行コードの統一変換とか

すっかり忘れたので晒しあげ日記。

やりたい事。

・改行コードがCR+LFCRLFなどの混在したファイルたちを全部LFで統一したい。

この要件を満たす為に思いついたコマンド「tr」さん

文字を置換してくるコマンドですね。

実行したコマンド

tr "\r\n" "\n" < test.txt > buff
tr "\r" "\n" < buff > test.txt
rm buff

ファイルを確認…あれ?うまくいかない…!

(な、なぜだ・・・)

答え:trコマンドは文字列ではなく文字の変換なのでできなくて当然。


trコマンドがだめなら!ってことで思いついたコマンド「sed」さん

文字列を置換してくれるコマンドですね。

実行したコマンド

sed -e s/\\r\\n/\\n/g < test.txt > buff
tr "\r" "\n" < buff > test.txt
rm buff

完璧…!

がしかし、うまくいってない。

まだ根本的な原因を理解してないが、考えてる途中で天からの声が・・・。

※ 原因は恐らくsedが行単位で処理するのと関係がある。

天の声「kanehamaさん、そこはnkf使えばいいじゃないかしら?」

ですよね!

nkf使えばあっと言う間なの忘れてました。

nkf -sLu test.txt > buff
mv buff test.txt

これで解決!

kanehamakanehama 2011/02/16 16:20 nkfは--overwrite使えよハゲって言われる前にセルフツッコミ

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証