在文本文件中查看行尾
我试图在bash中使用某些东西来显示打印文件而不是解释文件中的行尾。 该文件是由Linux机器读取的SSIS / SQL Server进行处理的转储。
在vi
, less
, more
等有没有开关?
除了看到行结束,我需要知道什么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。 不是很优雅,但它的工作原理。