【发布时间】:2014-08-12 13:28:18
【问题描述】:
我收到了一个我从未见过的格式的数据文件。数据似乎不是在列中,而是在一个长行中。我可以在Notepad 中打开文件并查看数据。因此,数据似乎没有被加密。
当我在Notepad 中打开数据文件时,当我猜测数据达到Notepad 在单行中允许的最大字符数时,数据行会回绕到Notepad 窗口的左侧,然后数据在新行中继续。
当我在Notepad 中打开文件时,可能有10,000 行数据。其中一行中的数据与其上方或下方的行中的数据不对齐。
以下是一些示例数据:
40001 1 5 GGGG 2998 HHHH SU111111 95 1.0 F1 4 1304 3 0 0
40001 1 5 GGGG 2998 HHHH SU111111 95 1.0 F1 4 0205 0 3 0
40001 1 5 GGGG 2998 HURG SU111111 95 1.0 F1 4 0805 0 2 0
40001 1 5 GGGG 2998 HHHH SU111111 95 1.0 F1 4 1205 0 2 0
40001 1 5 GGGG 2998 HHHH SU111111 95 1.0 F1 4 1505 0 0
40002 2 8 GGGG 2998 PPPP SK777777 -999 1.0 F3 4 2003 0 0
40002 2 8 GGGG 2998 PPPP SK777777 -999 1.0 F3 4 2303 2 0 0
40002 2 8 GGGG 2998 PPPP SK777777 -999 1.0 F3 4 2703 3 0 0
40002 2 8 GGGG 2998 PPPP SK777777 -999
请注意,当我将示例数据粘贴到此处时,表示 Notepad 中的一行,这些列“神奇地”对齐。
我发现可以打开Excel中的数据文件,数据也对齐了。但是,我确实需要在Excel 中手动分配列边界。并且Excel 不允许我分配超出或多或少字符空间 123 的列边界。
下面是读取数据文件的SAS 代码,虽然这个SAS 代码不能正常工作。相反,我猜这个SAS 代码会跳过一些数据行。请注意,变量 TT 覆盖了 125-207 个字符空间,但大多数行中只有 120 个字符。某些行中有超过 120 个字符。我怀疑行之间字符数的差异是 SAS 无法正确读取此数据文件的原因。
option linesize = 210 ;
option pagesize = 30 ;
FILENAME myinput 'C:/Users/markm/simple SAS programs/mydata.new' ;
DATA mydata ;
INFILE myinput ;
INPUT
AA 2-9
BB 12-17
CC 18-22
DD $ 24-27
EE 30-33
FF $ 35-38
GG $ 40-47
HH 53-56
II 59-64
JJ $ 66-68
KK $ 70-71
LL 72-78
MM 79-85
NN $ 87-90
OO 91-95
PP 97-104
QQ 105-110
RR 112-120
SS $ 122-123
TT $ 125-207 ;
如果我使用右箭头键将光标在第一行数据上一次向右移动一个字符,我必须按两次右箭头键才能移动到 Notepad 中的字符空间 120 之外。
这一切都在告诉我,数据文件中存在隐藏字符,用于识别一行数据的结尾。
我打开Vim中的数据文件希望能看到这些隐藏字符,但什么也没看到。 Vim 在我打开文件时确实正确对齐了列。所以,Vim 一定会看到这些隐藏的行尾字符。
我自己如何才能看到这些行尾字符?我怀疑Vim 中有一个选项可以显示隐藏的字符。
如何确定创建此数据文件的应用程序?
如何修改上面的SAS代码才能正确读取这个数据文件?
【问题讨论】:
标签: excel vim text sas hidden-characters