パソコン悪戦苦闘記録

Linuxのsedコマンドで改行コード変換の方法

 Windows上で作成したテキストファイルをLinuxで開くと、使用される改行コードが異なるために文字化けを起こし、ファイルの内容を読み取ることができないってことがあります。

 その場合、テキストファイル中の改行コードを変換する必要があります。
 すなわち、
  Windowsで使われる改行コードCrLf(キャリッジリターン ラインフィード)を、
  Linuxで使われる改行コードLf(ラインフィード)へ、
置き換え、変換します。





 昨日(2024年5月24日)のブログ記事では、
  改行コード変換にLinuxの置換コマンドsedを使えるはず
  sedを使えば改行コード変換ができるはず

と書きました。

 昨日の記事は、
   こちらをご覧ください。

 んで、sedコマンドを使えば、果たしてそのとおりにできるのかどうか、
さっそく、挑戦してみました。
 そうしたならば、実にあっけないほど簡単に変換が成功し、完了しました。

 方法は、次のとおりです。
  $ sed -i 's/\r//g' HogeHoge.txt  

 sedによって文字列置換を実行するには、スクリプトに「s」コマンドを使います。
 その書式は、
  s/置換前文字列/置換後文字列/フラグ  です。

 置換後文字列を指定せずに空にすることで、空文字に置換する、すなわち置換前文字列を削除することができます。
 また、フラグは省略可能ですが、省略した場合は、行頭から探して最初に見つかった文字列だけを置換して、その時点で処理を終了します。
 そこで、見つかったすべての文字列を置換したい場合は、「g」フラグを付けます。


 上記コードを記述するのに一つだけ戸惑ったのが、置換前文字列の箇所に改行コード「Cr(キャリッジリターン)」を指定するには、どう書くかという点です。
 調べたところ、改行コード「Cr(キャリッジリターン)」を表す正規表現は、「\r」だそうです。
 それで、
   $ sed -i 's/\r//g' HogeHoge.txt
になったというわけです。

 なお、
 Linux上の「\r」(バックスラッシュ・アール)は、 Windows環境の画面上では、
「¥r」(円マーク・アール)と表示されます。ただ、2つは同一です。・・・参考までに。


 Linuxコマンドも、使いこなせるようになればなかなかおもしろくて楽しめる上に、便利ですねぇ



それでは、また次の記事で
goosyun


《2024年9月22日追記》
 キャリッジリターンの除去に、trコマンドも使えます。
  こちらの記事をご覧ください。
名前:
コメント:

※文字化け等の原因になりますので顔文字の投稿はお控えください。

コメント利用規約に同意の上コメント投稿を行ってください。

 

  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最近の「Ubuntu」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事