改行コードの「^M」を削除する方法
改行コード「^M」を削除する方法を紹介します。
1.「^M」とは
「^M」は改行コードの「CR(復帰)」を指します。
「CR」はアスキーの制御コードです。
本題の前に、なぜ「^M」が「CR」を指すのか調べてみました。
まず「^」はCtrlキーを意味します。
次に、半角英文字の「M」は、ASCIIコードの10進数「77」が対応します。
つまり「^M」はCtrlキーを押しながら「M」を押下することを意味し、Ctrlキーを押下すると、同時に押下した文字のASCIIコードから「-64」されます。
つまり「M(77)」はCtrlキーを押下することで「13」になります。
「13」はASCII制御コード「CR」になります。
2.「^M」が表示されるケース
Windows上で作成したテキストファイルの改行コードは「CR+LF」なので、この改行コードのままLinuxに転送してvi等で開くと「^M」が表示されます。
またLinux上でも、typescriptの改行コードは「CR+LF」のため、scriptファイルをvi等で開くと「^M」が表示されます。
3.問題点
「^M」はCRなので、正規表現の「\r」が対応しますが、たとえばsedで
sed -e s/\r//
としても削除することができません。
というところでつまづいたので、以降で「^M」を削除する方法を紹介します。
4.sedで「^M」を削除する
sedで「^M」を削除するには次のようにします。
sed -e s/^M//
「^M」はキーボードで「^」と「M」を入力するのではなく、「Ctrl-v」と「Ctrl-m」を連続して入力します。
5.viで「^M」を削除する
viで「^M」を削除するには、「Esc」+「:」を入力したあと、次の文字を入力します。
%s/^M//g
3項と同様「^M」は「Ctrl-v」と「Ctrl-m」を連続して入力します。
Posted by yujiro このページの先頭に戻る
- VMをundefineできない場合の対処
- cpanflute2でエラーになる場合の対処
- シェルスクリプトをバイナリ化する「shc」
- OpenSSLで文字列を暗号化・複号化する方法
- sshログインに時間がかかる場合の対処
- vi/vimで範囲指定して置換する方法
- vi/vimでマークした行に移動する方法
- vi/vimで複数行を一括削除する方法
- LinuxでOSキャッシュをクリアする方法
- lessで検索文字列だけを表示する方法
- tailコマンドでファイルがローテートされても追従する方法
- svnでファイルやディレクトリを削除する方法
- phpMyAdminで「unknown system variable 'lc_messages'」となる場合の対処
- Linux(CentOS)でapxsがみつからない場合の対処
- PHP7.3とApacheを連携させる方法
トラックバックURL
コメントする
greeting