web-dev-qa-db-ja.com

行末を変換する

行末を変換するためにd2uを使用しています。 Puppy Linuxをインストールした後、d2uではなくdos2unixが付属していることに気付きました。その後、デフォルトでUbuntuが両方とも欠落していることに気付きました。

行末を変換する別の方法は何ですか?

53
Steven Penny

POSIXでこれを行うのは難しいです。

  • POSIX Sed\rまたは\15をサポートしません。たとえそれが行われたとしても、インプレースオプション-iはPOSIXではありません

  • POSIX Awk\rおよび\15をサポートしますが、-i inplaceオプションはPOSIXではありません

  • d2uおよびdos2unixPOSIXユーティリティ ではありません、しかしex

  • POSIX ex\r\15\nまたは\12をサポートしません

キャリッジリターンを削除するには:

awk 'BEGIN{RS="^$";ORS="";getline;gsub("\r","");print>ARGV[1]}' file

改行を追加するには:

awk 'BEGIN{RS="^$";ORS="";getline;gsub("\n","\r&");print>ARGV[1]}' file
66
Steven Penny

いくつかのオプション:

trを使用

tr -d '\15\32' < windows.txt > unix.txt

または

tr -d '\r' < windows.txt > unix.txt 

Perlを使用

Perl -p -e 's/\r$//' < windows.txt > unix.txt

sedを使用

sed 's/^M$//' windows.txt > unix.txt

または

sed 's/\r$//' windows.txt > unix.txt

^Mを取得するには、CTRL-Vと入力してからCTRL-Mと入力する必要があります。

91
jaypal singh