パソコン悪戦苦闘記録

trコマンドで改行文字Crを削除

 Windows環境で作成されるテキストファイルと、Linux環境で作成されるテキストファイルとでは、改行文字、改行コードが異なります。
 Windowsではキャリッジリターン・ラインフィード(CrLf)が標準であり、対してUbuntuをはじめとしたLinuxでは、ラインフィード(Lf)が標準です。

 そのため、Windows環境で作成したテキストファイルをLinux環境で扱うときには、注意が必要です。
 例えば、Windowsで作成したシェルスクリプトをLinux下で実行すると、エラーが出て失敗します。
 「誤ったインタプリタです: そのようなファイルやディレクトリはありません」というエラーメッセージが出て、実行してくれません。

 そういう場合、CrLf中のCrのみを削除するとうまくいきます。
 そうした文字の置換・削除のために、「sed」コマンドがあります。

 これまでは、そのsedコマンドを使って、こうした場面に対処していました。
   $ sed -i 's/\r//g' Hoge.txt  

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


 たまたまWeb上のLinuxコマンドの解説をぼんやりと眺めていたら、sedより簡単に、改行文字 Cr を削除する方法が見つかりました。
 それは、文字を置き換えるコマンド、「tr」です。
 trの書式、構文は、
   tr <置換前文字> <置換後文字>  です。

 「-d」オプションを使うと、文字の削除ができます。
   tr -d <削除文字>  です。





 このコマンドを使うと、次のように簡単に改行文字Crの削除ができます。

  tr -d '\r' < 読み込みファイル > 出力ファイル  

 上記の記述中、「\r」は、キャリッジリターンを示す正規表現です・・・Linux環境では「バックスラッシュ アール」と表示され、Windows環境では「円マーク アール」と表示されます。見た目が違うだけで、両者は同じものです。

 確かに、sedコマンドでもできますが、書式、構文が少々やっかいで、すぐに忘れてしまいます。
 それに対して、trコマンドは書式が簡潔だから、すぐに思い出すことができそうです。
 ちなみに、「tr」は「translate」(「翻訳する」という意味)の略です。


 これからは、キャリッジリターン削除には、このtrコマンドを使うことにします。




それでは、また次の記事で
goosyun
名前:
コメント:

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

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

 

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

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

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