Help us understand the problem. What is going on with this article?

BashでファイルにCRLFが含まれているかを判断してLFに置換する

More than 1 year has passed since last update.

Bashで、テキストファイルの行末コードがCRLFになっているかを、なるべく短くてビルトインのコマンドで判断する・置換するコードです。

ファイルにCRLFが含まれているかを判断する

grep -U $'\r' winfile.txt

if文で処理を分ける場合

if grep -q -U $'\r' winfile.txt; then
  # CRLFである場合の処理
else
  # そうでない場合の処理
fi

行末のCRLFをLFに統一する

sed 's/'$'\r''$//' winfile.txt

置換した結果を別ファイルに吐き出す場合

sed 's/'$'\r''$//' winfile.txt > out.txt

直接ファイルを上書きする場合

sed -i 's/'$'\r''$//' winfile.txt

macOSなどBSD系だと、バックアップ拡張子が必要。

sed -i.bak -e 's/'$'\r''$//' winfile.txt
tabian
画像認識技術を用いて、新しいポスター体験を提供する「ポ写」を開発している全員副業のスタートアップです! エンジニアが自由に、でも真面目に技術に向き合える環境、それは最新技術にとことんこだわれることだと思って日々Qiitaの更新頑張ってます。
https://tabian.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away