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