\ r \ nを\ nに変換するBashコマンドはありますか?


19

\ r \ nを\ nに変換するBashコマンドはありますか?

WindowsからLinuxにスクリプトをアップロードするとき、物事を機能させるにはこのようなユーティリティが必要です。


7
dos2unixそれ以外の場合は通常sed -e 's/\r$//'
-falstro

1
いいえ、そのためのBashコマンドはありませんが、dos2unix必要なことを行うUnix / Linuxプログラムがあります。
デニスウィリアムソン

1
ファイルを保存する際に改行スタイルを選択できる健全なテキストエディタを使用しないのはなぜですか?
vtest

回答:



5

翻訳(tr)はすべてのUnixで利用可能です:

tr -d '\r'  # From \r\n line end (DOS/Windows), the \r will be removed so \n line end (Unix) remains.

1
\rのを削除する副作用もあります。しかし、それらは非常にまれです。
ivan_pozdeev

5

sedで、その終わりを.txt, .php, .js, .css次のように見つけます。

 sed -rie 's/\r\n/\n/' \
 $(find . -type f -iregex ".*\.\(txt\|php\|js\|css\)")

5

conv行末を変換できるUnixユーティリティがあります。多くの場合、u2dまたはd2uまたはunix2dosまたはへのソフトリンクで呼び出されますdos2unix

さらに呼ばれるユーティリティがあるfromdosとはtodos


2

man 1 ed(以前のバックアップなしでファイルをその場で編集します-sed .. -i ".bak" ...とは異なります)を使用します。

ed -s file <<< $'H\ng/\r*$/s///\nwq'

私もエドを知っているが、それは(古いけど金)仕事をしていませんdiden't
dwana

私が使用している共有ホスティング上に他の回答からのコマンドが存在しない場合、このコマンドは私のために機能しました。ありがとう:)
FKasa

2

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

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

  • POSIX awkにはサポートしています\r\15、しかし-i inplaceオプションはPOSIXではありません

  • d2udos2unixPOSIXユーティリティではありませんが、ex

  • POSIX exはサポートしていない\r\15\nまたは\12

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

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

改行を追加するには:

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


0

$ recode dos .. FILE
$ flip -u FILE

(Ubuntu以外のシステムにもそれぞれ存在しますが、これらのリンクは便利です。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.