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

Why are there hidden columns in linux txt files?

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

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

是否有部分列被隐藏了?

可能的问题是文本文件中有 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 这样的编辑器通常也会显示这些字符。