【问题标题】:Linux command to view raw file, including its delimiters用于查看原始文件的 Linux 命令,包括其分隔符
【发布时间】:2023-03-29 20:29:01
【问题描述】:

我正在尝试在终端中查看文件的内容,包括其分隔符。 例如:

hello\t\tworld\n
hello\t\tworld\t\tagain\n

而不仅仅是:

hello world
hello world again

前段时间我使用“sed”或“awk”做过一次......我想......但是,我现在似乎不记得了。

感谢您的帮助。

【问题讨论】:

  • cat -A(或cat -vET)是否为您完成这项工作?
  • @KarolyHorvath 你或许应该从中得出答案。
  • 格式不一样,所以问题来了。
  • 我明白了,格式不一样,但我可以看到分隔符。谢谢大家!
  • 另外,您可以使用od -t a fileod -t c file

标签: linux awk sed terminal


【解决方案1】:

如果打开其中的文件并输入 :set list,VI 可以显示此内容。

例如

$ cat test.txt
hello           world
hello           world           again

在 VI 中,^I 是制表符,$ 是换行符。

也像评论状态 - cat -A 会得到相同的输出:

$ cat -A test.txt
hello^I^Iworld$
hello^I^Iworld^I^Iagain$

【讨论】:

  • 我不使用 vi,但 cat -A 可以正常工作。这只是一种不同的格式。但是,暂时有效。谢谢!
【解决方案2】:

你可以使用od命令,

od -t a input_file | awk '{$1=""}1' | 
awk 'BEGIN{RS="[ \t\n]+";ORS="";
    d["sp"]=" "; d["nl"]="\\n\n"; d["ht"]="\\t"; d["cr"] = "\\r";
}length($0)>1{$0=d[$0]}1'

input_file

你好世界 世界你好

你明白了,

你好\t\t世界\n 你好\t\t再次世界\n

【讨论】:

    【解决方案3】:

    这可能对你有用(GNU sed):

    sed -n l0 file
    

    这将显示所有选项卡,并且换行符将被 $ 替换。

    如果您希望将换行符显示为 \n,那么请浏览整个文件:

    sed -n '1h;1!H;$!d;x;l0' file
    

    【讨论】:

    • 好命令?
    【解决方案4】:

    这个sed 应该可以工作,您可以修改它以匹配并显示您想看到的任何内容(例如空格)。棘手的部分是匹配换行符,因为sed 使用换行符来分隔流,它在你到达之前已经被消耗掉了。所以沿着sed 's/\n/\\n/'的行匹配会失败,你可以通过匹配结束字符和\\n的大头钉来假设换行。

    sed 's/$/\\n/;s/\t/\\t/g;s/ \{4\}/\\t/g' file

    【讨论】:

      猜你喜欢
      • 2023-04-07
      • 2011-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多