いろいろ備忘録日記

主に .NET とか Go とか Python絡みのメモを公開しています。

colコマンドでCR(キャリッジリターン)を除去

概要

小ネタ。よく忘れるのでメモメモ。

linuxとかで作業していると、たまに windows で作ったファイルを開くと CR が付いているので ^M というのが見えてしまう場合があります。(よくある・・w)

んで、これが邪魔なので、nkf とか使って除去するのですが、残念なことに nkf が入っていない場合も実務ではたまにあります。。。。

そういうときは col コマンドさんを利用すると便利です。

col -b < CRが入っているファイル > 除去したファイル

ってやると、CRさんが消えてくれます。

col コマンドは、-x オプションをつけるとタブをスペースに変換もしてくれるので知ってると便利です。

col コマンド自体については、以下が参考になります。

linuxjm.osdn.jp

x68000.q-e-d.net

webkaru.net

サンプル

#!/usr/bin/env bash

basedirpath=/tmp/try-linux/colexample

# 実験用のディレクトリ作成
rm -rf "$basedirpath"
mkdir -p "$basedirpath"

# CRLFとLFを混ぜたテキストファイルを出力
printf "hello\r\nworld\n" > "$basedirpath"/helloworld1.txt

# col コマンドで CR を除去
col -b < "$basedirpath"/helloworld1.txt > "$basedirpath"/helloworld2.txt

# 結果確認
echo '--------------- before ---------------'
hexdump -c "$basedirpath"/helloworld1.txt
echo '--------------- after  ---------------'
hexdump -c "$basedirpath"/helloworld2.txt

try-linux/remove_carriage_return.sh at master · devlights/try-linux · GitHub

実行すると以下のようになります。

gitpod /workspace/try-linux $ make
bash ./main.sh -o
ENTER EXAMPLE NAME: col
[INPUT ] col
[TARGET] col_remove_cr
[SCRIPT] basic/col/remove_carriage_return.sh
===== START [basic/col/remove_carriage_return.sh] =====
--------------- before ---------------
0000000   h   e   l   l   o  \r  \n   w   o   r   l   d  \n            
000000d
--------------- after  ---------------
0000000   h   e   l   l   o  \n   w   o   r   l   d  \n                
000000c
===== END   [basic/col/remove_carriage_return.sh] =====

参考情報


過去の記事については、以下のページからご参照下さい。

  • いろいろ備忘録日記まとめ

devlights.github.io

サンプルコードは、以下の場所で公開しています。

  • いろいろ備忘録日記サンプルソース置き場

github.com

github.com

github.com