Windowsでは、Unix ^MでFTPの後に追加されたスクリプトから特殊モードを削除します。

Windowsでは、Unix ^MでFTPの後に追加されたスクリプトから特殊モードを削除します。

FTPを使用してWindowsファイルをUnixシステムに送信し、^M改行文字を必要とするファイルを追加しましたが、単に削除したいと思いました。

私が持っているオプションの1つは、dos2unixコマンドを実行することです。

そのようなパターンを削除する他の方法(sedコマンドなど)を提案できる人はいますか?

ベストアンサー1

Windows 行末は、2 つの文字シーケンス CR、LF で構成されます。 CRはキャリッジリターン文字であり、時にはなどで\r表されます\015^MUnixの行末は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

おすすめ記事