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 ■■■■
最近の「Ubuntu」カテゴリーもっと見る
最近の記事
カテゴリー
バックナンバー
人気記事