DOS/Windows の改行 (CRLF) を Unix の改行 (LF) に変換する方法 質問する

DOS/Windows の改行 (CRLF) を Unix の改行 (LF) に変換する方法 質問する

プログラム的に(使用せずに)vi) DOS/Windows の改行を Unix の改行に変換しますか?

およびコマンドはdos2unixunix2dos特定のシステムでは使用できません。、、
などのコマンドを使用して、これらのコマンドをエミュレートするにはどうすればよいですか?sedawktr

ベストアンサー1

DOS から Unix に変換するには、を使用できますtr。ただし、CR がファイル内で CRLF バイト ペアの最初のバイトとしてのみ表示される場合にのみ、これを安全に実行できます。通常はこれが該当します。次に、次のように使用します。

tr -d '\015' <DOS-file >UNIX-file

名前はDOS-file名前とは異なることに注意してくださいUNIX-file。同じ名前を 2 回使用しようとすると、ファイルにデータがなくなることになります。

逆の方法 (標準の 'tr' を使用) は実行できません。

スクリプトにキャリッジ リターンを入力する方法 (Ctrl + M を入力する) がわかっている場合はcontrol-Vcontrol-M次の操作を実行します。

sed 's/^M$//'     # DOS to Unix
sed 's/$/^M/'     # Unix to DOS

ここで「^M」はコントロールM文字です。bash ANSI-C 引用符キャリッジリターンを指定するためのメカニズム:

sed $'s/\r$//'     # DOS to Unix
sed $'s/$/\r/'     # Unix to DOS

しかし、これを頻繁に(大まかに言えば、複数回)行う必要がある場合は、変換プログラム(例:dos2unixそしてunix2dos、 多分dtouそしてutod)を使用してみてください。

ディレクトリ全体とサブディレクトリ全体を処理する必要がある場合は、以下を使用できますzip

zip -r -ll zipfile.zip somedir/
unzip zipfile.zip

これにより、行末が CRLF から CR に変更された zip アーカイブが作成されます。unzip次に、変換されたファイルを元の場所に戻します (ファイルごとに確認されます。すべて Yes と答えることができます)。この点を指摘してくれた @vmsnomad に感謝します。

おすすめ記事