テキストファイル中の CRLF をまとめて除去する メモ CR だけ消すんじゃないよ

CRを削除する方法はググれば山ほど出てくるけど、CRLFをまとめて削除する方法はなかなか見つからない。CSVファイルのカラム中の改行を処理するために考案。

ポイント

  1. sed で LF は処理できない
  2. trは1文字の変換しかできない


ない知恵絞った結果 ↓

#!/bin/bash -xv

echo hoge.txt | tr '\n' '\r' |  sed -e's/^M^M//g' | tr '\r' '\n'
  1. tr '\n' '\r' : LFをCRに変換
  2. sed -e's/^M^M//g' : CRLF だったところは CRCR になっているのでそれを削除
  3. tr '\r' '\n' : CR を LF にもどす


^M は Ctrl + v, Ctrl + m で入力する。
OK