为什么linux txt文件中有隐藏的列?

时间:2015-08-13 05:57:05

标签: linux file multiple-columns edit hidden

我无法解释为什么在编辑此文件时会发生这种情况,

head fileA -n 3
10010    NC_000002.12    161136926       161236175oding
10012629NC_000005.10A2-1136080497       136080596cRNA
10012630NC_000023.1188  145994783q27.3  145994859

head fileA -n 3|cut -f 2
TANK
VTRNA2-1
MIR888

我删除并重新生成了文件,但这仍然存在 请帮忙

此外,

more fileA|grep "TANK"
10010   NC_000002.12    161136926       161236175oding

是否有可能隐藏某些列?

1 个答案:

答案 0 :(得分:2)

可能的问题是文本文件中有backspace个字符。 这是一个演示:

#include <stdio.h>
int main () {
    printf("foo\tTANK\t\b\b\b\b\b\b\b\b\bspace\n");
}

将其编译为名为test的可执行文件:

$ ./test 
foo    space
$ ./test | cut -f1
foo
$ ./test | cut -f2
TANK
$ ./test | cut -f3
space

\b是一种告诉C放入退格符的方法。在文件中,保留所有字符,包括TANK字符。但是当在终端中显示时,退格字符会使每个退格区的插入符占用一个字符,如果打印了其他内容,则已经打印的字符将被覆盖。

如果您需要查看包含退格字符等内容的文件内容,请尝试使用十六进制编辑器查看该文件。它将允许您查看所有详细信息。

或者,使用像vi或gedit这样的编辑器通常也会显示这些字符。