我有一堆文件,其中许多有混合行结尾(CRLF 或 LF)。我想编写一个迭代文件列表的脚本,并为每个文件将文件转换为最流行的行尾。例如,如果file1有 23 行以 LF 结尾,15 行以 CRLF 结尾,我想在其上运行dos2unix。如果file2有 2 行以 LF 结尾,16 行以 CRLF 结尾,我想在其上运行unix2dos。有谁知道如何计算文件中每种类型的行尾数?我grep -c $'\r\n' FILE
从 Cygwin Bash 终端尝试过,但无论文件中的行尾类型如何,它都匹配每一行。
我正在寻找的命令显然是:
grep -c $'\r$' FILE
这似乎只匹配 Windows (CRLF) 行尾。
只是部分答案,但这里有一个计算 \r 的小技巧:首先通过 hexdump 转换为 ascii 十六进制代码,然后计算“0D”(即 \r)的出现次数。
可以对 0A 执行相同的操作(对于 \n),然后执行您要选择的逻辑。