head 和 cat 无法识别 Microsoft Excel 文本文件

head 和 cat 无法识别 Microsoft Excel 文本文件

我有一个很大的 .xls 文件,有 53760 行和 19 列。我将其保存为制表符分隔文本,以便通过命令行工具对其进行预处理,然后将其加载到 R 中。但是,当我运行

head myfile.txt

我的终端一次显示所有行,例如

cat myfile.txt

命令应该这样做。但是如果我运行

cat myfile.txt | wc -l

我得到的答案是 0。更有趣的是,R 可以读取我的数据,无需任何额外包的帮助,并识别所有 53760 行和 19 列。我想这是一个 Excel 问题,但我不知道它是什么。

我正在使用 Mac OS 10.9.1、Microsoft Excel for Mac 2011、bash 4.2 和 iTerm 2 1.0.0.20130622

答案1

在 Linux 和 Mac OS 上,进入 vi,执行以下替换,然后再次保存文件,这样就可以了,

$ vi myfile.txt
:%s/^V^M/^V^M/g
:wq

其中 ^V^M 表示输入 Ctrl+V,然后输入 Ctrl+M,并以回车键结束每一行。

这应该会将正常的 UNIX 行终止符放在 Excel 逗号分隔值行的末尾。如果您经常这样做,您甚至可以创建一个 vi 脚本来自动化它,然后从 bash 脚本调用该 vi 脚本,并隐藏所有这些系统不协调之处,并将其称为 dos2unix。:-)

要在 dos2unix.vim 中创建 vim 脚本,请执行以下操作:

  1. 通过创建脚本

    $ vi -w dos2unix.vim 我的文件.txt

  2. 仔细输入上面提到的三行序列。

  3. 现在将该脚本应用到任何文件

    $ vi -s dos2unix.vim 任意文件.txt

至于是否将其全部封装到 bash 脚本或别名中,则取决于你

alias dos2unix='vi -s ~/.vimscripts/dos2unix.vim '

为了能够像内置那样执行此操作,因为现在只需创建一个名为 ~/.vimscripts 的文件夹,并将上面创建的脚本文件放在那里。

相关内容