在文本文件中查看行尾

我试图在bash中使用某些东西来显示打印文件而不是解释文件中的行尾。 该文件是由Linux机器读取的SSIS / SQL Server进行处理的转储。

vilessmore等有没有开关?

除了看到行结束,我需要知道什么types的行结束(CRLF或LF)。

您可以使用file实用程序为您提供行结束的types的指示。

Unix的:

 $ file testfile1.txt testfile.txt: ASCII text 

“DOS”:

 $ file testfile2.txt testfile2.txt: ASCII text, with CRLF line terminators 

从“DOS”转换为Unix:

 $ dos2unix testfile2.txt 

从Unix转换到“DOS”:

 $ unix2dos testfile1.txt 

转换已经转换的文件没有任何效果,因此可以安全地盲目运行(即不先testing格式),尽pipe通常的免责声明一如既往地适用。

vi

:set list来查看行尾。

:set nolist恢复正常。

虽然我不认为你可以在vi看到\n\r\n ,但你可以看到它是哪种types的文件(UNIX,DOS等)来推断它具有哪一行结尾。

:set ff

或者,你可以使用od -tc <filename>或者od -c <filename>来显示返回值。

在bash shell中,尝试cat -v <filename> 。 这应该显示回车窗口文件。

(这在Windows XP上通过Cygwin在rxvt中为我工作)。

编者按: cat -v可视化\r (CR)字符。 作为^M 因此,以行结尾的\r\n序列将在每个输出行的末尾显示为^M cat -e会另外显示\n ,即$ cat -et会另外显示制表符的字符为^I

Ubuntu 14.04:

简单的cat -e <filename>工作得很好。

这显示Unix行结束符( \n或LF)为$和Windows行结束符( \r\n或CRLF)为^M$

您可以使用xxd显示文件的hex转储,并search“0d0a”或“0a”字符。

您可以使用cat -v <filename>作为@warriorpostmanbuild议。

要显示CR为^M ,less用less -u或者type - u再打开一次。

man less

 -u or --underline-special Causes backspaces and carriage returns to be treated as print- able characters; that is, they are sent to the terminal when they appear in the input. 

您可以使用命令todos filename转换为DOS结尾,并使用fromdos filename转换为UNIX行结尾。 要在Ubuntu上安装软件包,inputsudo apt-get install tofrodos

您可以使用vim -b filename以二进制模式编辑文件,该文件将显示用于回车的^ M个字符,并且新行表示LF存在,表示Windows CRLF行尾。 LF表示\n ,CR表示\r 。 请注意,使用-b选项时,文件将始终在UNIX模式下进行编辑,如状态行中的[unix]所示,这意味着如果添加新行,它们将以LF结束,而不是CRLF。 如果在CRLF行结尾的文件上使用不带-b的正常vim,则应该在状态行中看到[dos] ,插入的行将以CRLF结尾。 fileformats设置的vim文档解释了复杂性。

此外,我没有足够的评论Notepad ++答案的意见,但如果您在Windows上使用Notepad ++,使用查看/显示符号/显示行尾菜单显示CR和LF。 在这种情况下,显示LF,而对于vim,LF由新行显示。

我将我的输出转储到一个文本文件。 然后我用记事本+ +打开它,然后单击显示所有字符button。 不是很优雅,但它的工作原理。