テキストファイルの改行文字を決定しますか?


8

テキストが与えられた場合、Windows、Mac、またはLinuxの改行文字を検出できるプログラムはありますか?

たとえば、次のテキストは less

メモ:^ M ^ MisストレージはCPUから直接アクセス可能^ M ^ M「メモリ」という用語は、多くの場合(常にではありません)、アドレス可能な半導体メモリ、つまりシリコンベースのトランジスタで構成される集積回路に関連付けられています。^ M半導体メモリは^ Mmemoryセル

Macでは^ Mが改行文字だと思いました。しかし、emacsでは、Ctrl-q Ctrl-mで検索しても何も見つかりませんでした。

ありがとう。


1
fileコマンドは手掛かりを与えるはずでdos2unixあり、また役立つかもしれません。
Archemar 2014年

回答:


9

fileテキストファイルの行末をレポートします。たとえばfile、ASCII Unix / Linux / OSXテキストファイルで実行すると、次のようにレポートされます。

$ file test.txt
test.txt: ASCII text

ただし、ファイルにDOS / Windowsの行末がある場合は、代わりに次のように報告されます。

test.dos: ASCII text, with CRLF line terminators

OS 9までは、MacはCRを行末として使用していました。そのようなファイルを提示すると、次のfileように報告します。

test.mac: ASCII text, with CR line terminators

OSXでは、Macは標準のUnixの行末に変換されました。


テキストファイルがLinux、Mac、およびWindowsのテキストの混合である場合。ウィルfileはまだ右の改行文字を報告?
ティム・

@Timいくつかの混合ファイルでテストしましたが、混合終了を正しく報告しました。たとえば、3つのタイプすべてで、それは報告されました ASCII text, with CRLF, CR, LF line terminators
John1024 2014年

私はこれを試してみましたASCII text, with very long lines。ターミネータはLFです
言葉としては、2017年

@wordsforthewise LFターミネータは、UNIXおよびLinuxの標準です。ファイルにLFターミネーターが含まれている場合、fileどのターミネーターが使用されているかについては触れません。上記の回答の最初の例を参照してください。ターミネータは、ファイルに非UNIXターミネータが含まれている場合にのみ言及されます。上記の回答の2番目と3番目の例を参照してください。それとは別に、ファイルに1行以上の長い行がある可能性があります。
John1024

1
はい、わかりました。とても面白かったので、「非常に長い列」と言った
言葉
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.