我无法解释为什么在编辑此文件时会发生这种情况,
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
是否有可能隐藏某些列?
答案 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这样的编辑器通常也会显示这些字符。