FTPを使用してWindowsファイルをUnixシステムに送信し、^M
改行文字を必要とするファイルを追加しましたが、単に削除したいと思いました。
私が持っているオプションの1つは、dos2unix
コマンドを実行することです。
そのようなパターンを削除する他の方法(sed
コマンドなど)を提案できる人はいますか?
ベストアンサー1
Windows 行末は、2 つの文字シーケンス CR、LF で構成されます。 CRはキャリッジリターン文字であり、時にはなどで\r
表されます\015
。^M
Unixの行末はLF文字です。
すべてのUnixバリアントに存在する標準ユーティリティのみを使用してWindows行末をUnix行末に変換するには、次のようにします。tr
便利です。
tr -d '\r' <thefile >thefile.new && mv thefile.new thefile
ファイルにすでにUnix行の終わりがある場合、その内容は変更されません。
現在のディレクトリに変換するファイルが多い場合は、ループを使用できます。名前が終わるファイルがないとします.new
。
for x in *; do
tr -d '\r' <"$x" >"$x.new" && mv "$x.new" "$x"
done
Linux(一部の組み込みLinuxシステムを除く)またはCygwinでは、次のものを使用できます。sed
。ファイルを内部で編集するオプションは、-i
これらのシステムにのみ適用されます。 CR文字表現\r
はより一般的ですが、普遍的ではありません。
sed -i -e 's/\r//g' thefile