我试图使用bash中的一些东西向我显示打印而不是解释的文件中的行结束符。该文件是从SSIS/SQL Server中转储的,由Linux机器读入以进行处理。
在vi中有任何开关,少,多,等等? 除了看到行结束符,我还需要知道它是什么类型的行结束符(CRLF或LF)。我怎么知道呢?
我试图使用bash中的一些东西向我显示打印而不是解释的文件中的行结束符。该文件是从SSIS/SQL Server中转储的,由Linux机器读入以进行处理。
在vi中有任何开关,少,多,等等? 除了看到行结束符,我还需要知道它是什么类型的行结束符(CRLF或LF)。我怎么知道呢?
当前回答
您可以使用文件实用程序来指示行结束符的类型。
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
转换一个已经转换的文件没有效果,所以盲目运行是安全的(即不先测试格式),尽管通常的免责声明适用,一如既往。
其他回答
要在less中将CR显示为^M,请使用less -u或在less打开时键入-u。
Man less说:
-u或——下划线-特殊 导致退格和回车被视为打印 能力特征;也就是说,它们被发送到终端时 它们出现在输入中。
Ubuntu 14.04:
简单的cat -e <filename>就可以了。
这将Unix的行结束符(\n或LF)显示为$,Windows的行结束符(\r\n或CRLF)显示为^M$。
在...
:设置列表以查看行结束符。
:将nolist设置为正常。
虽然我不认为你可以在vi中看到\n或\r\n,但你可以看到它是哪种类型的文件(UNIX, DOS等)来推断它有哪些行尾…
:设置FF
或者,在bash中可以使用od -t c <filename>或od -c <filename>来显示返回值。
Vim -总是将Windows换行符显示为^M
如果你喜欢在vim渲染中总是看到Windows换行符为^M,你可以将这行添加到你的.vimrc中:
set ffs=unix
这将使vim将您打开的每个文件解释为unix文件。由于unix文件以\n作为换行符,具有\r\n换行符的windows文件仍将正确呈现(多亏了\n),但在文件的末尾将有^M(这就是vim呈现\r字符的方式)。
Vim -有时显示Windows换行符
如果您更喜欢在每个文件的基础上设置它,您可以在编辑给定文件时使用:e++ ff=unix。
Vim -始终显示文件类型(unix vs dos)
如果您希望vim的底线始终显示您正在编辑的文件类型(并且您没有强制将文件类型设置为unix),您可以添加到您的状态行 设置statusline+=\ %{&fileencoding?&fileencoding:&encoding}。
我的完整状态线如下所示。只需将其添加到您的.vimrc。
" Make statusline stay, otherwise alerts will hide it
set laststatus=2
set statusline=
set statusline+=%#PmenuSel#
set statusline+=%#LineNr#
" This says 'show filename and parent dir'
set statusline+=%{expand('%:p:h:t')}/%t
" This says 'show filename as would be read from the cwd'
" set statusline+=\ %f
set statusline+=%m\
set statusline+=%=
set statusline+=%#CursorColumn#
set statusline+=\ %y
set statusline+=\ %{&fileencoding?&fileencoding:&encoding}
set statusline+=\[%{&fileformat}\]
set statusline+=\ %p%%
set statusline+=\ %l:%c
set statusline+=\
它会渲染成
.vim/vimrc\ [vim] utf-8[unix] 77% 315:6
在你文件的底部
Vim -有时显示文件类型(unix vs dos)
如果你只是想看看你有什么类型的文件,你可以使用:set fileformat(如果你强制设置文件类型,这将不起作用)。它将为unix文件返回unix,为Windows文件返回dos。
可以使用命令todos filename转换为DOS结尾,使用命令fromdos filename转换为UNIX行结尾。要在Ubuntu上安装软件包,输入sudo apt-get install tofrodos。