区分换行符
2 min read
CRLF, LF 是用来表示文本换行的方式。CR(Carriage Return) 代表回车,对应字符 '\r'
;LF(Line Feed) 代表换行,对应字符 '\n'
。不同的操作系统文本使用的换行符各不相同。
Windows 系统使用的是 CRLF, Unix系统(包括Linux, MacOS近些年的版本) 使用的是LF。
区分识别换行符
那么如何在命令行中,显示区分到底使用的是那个换行符,是CRLF,还是LF?可以使用下面几种工具:
- less
- cat
- file
1. file -k
通过命令 file -k demo.txt .
-
对于DOS/Windows 换行符, 会输出: with CRLF line terminators
-
对于MAC换行符,会输出:with LF line endings
-
对于Linux/Unix ”CR“, 则只会输出 text
2. cat -e
cat -e
--CRLF
$ cat -e 2020654103_2020-12-18.csv
LQH2HPN4R7MDRL,63036NC00-015-G,EY00875,2020654103,12000,12000^M$
DLW21HN900SQ2L,720400201-015-H,EY00H61,2020653533,300000,300000^M$
DLW21HN181SQ2L,720402M00-015-H,IZ00091,2020653533,18000,18000^M$
#LF
$ cat -e 2020654103_2020.csv
DLW21HN181SQ2L,720402M00-015-H,IZ00091,2020653533,18000,18000$
DLW21HN670HQ2L,720406000-015-H,IZ00339,2020653533,60000,60000$
DLW21HN670HQ2L,720406000-015-H,IZ00408,2020653533,24000,24000$
3. less -u
通过less -u 命令可以将 CR 显示成 ^M
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.
将DOS换行符转换成Unix换行符(NeoVim/Vim)
- dos2unix 是一个实用命令行工具,可以完成这个操作
set ff=unix
或者set fileformat=unix
进行命令修改:%s/\r//g
Last updated on 2020-12-19