【问题标题】:Why are there hidden columns in linux txt files?为什么linux txt文件中有隐藏列?
【发布时间】:2015-08-13 05:57:04
【问题描述】:

我无法解释为什么在我编辑这个文件时会发生这种情况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

是否有可能某些列被隐藏了?

【问题讨论】:

  • 您不应为此使用more,请改用cat 或致电grep "TANK" fileA
  • @Klaus 与 catgrep "TANK" fileA 的结果相同
  • 是的,它应该只是取决于你喜欢什么,有时你 grep 更多的东西,所以你可以使用grep "TANK" fileA | grep "..."
  • 嘿@once,如果你觉得我的回答令人满意,你会考虑接受吗?

标签: linux file multiple-columns edit hidden


【解决方案1】:

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

【讨论】:

  • 谢谢!这就是答案,除了\b还有\r文件在more fileA |sed -e 's/[\b\r]//g'&gt; newfileA987654325@之后恢复正常
猜你喜欢
  • 2011-01-28
  • 2022-06-25
  • 1970-01-01
  • 2011-08-14
  • 1970-01-01
  • 2014-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多