CRを削除する方法はググれば山ほど出てくるけど、CRLFをまとめて削除する方法はなかなか見つからない。CSVファイルのカラム中の改行を処理するために考案。
ポイント
- sed で LF は処理できない
- trは1文字の変換しかできない
ない知恵絞った結果 ↓
#!/bin/bash -xv echo hoge.txt | tr '\n' '\r' | sed -e's/^M^M//g' | tr '\r' '\n'
- tr '\n' '\r' : LFをCRに変換
- sed -e's/^M^M//g' : CRLF だったところは CRCR になっているのでそれを削除
- tr '\r' '\n' : CR を LF にもどす
^M は Ctrl + v, Ctrl + m で入力する。
OK