【问题标题】:uniq terminal command doesnt work?uniq 终端命令不起作用?
【发布时间】:2016-01-04 13:03:29
【问题描述】:

我正在尝试学习如何使用终端命令uniq。我正在使用 mac、bash shell (unix)。

这是我的文本文件“terminal.txt”:

this is a line  
this is a line  
this is a line

this is also a line  
this is also a line 

this is not a line

我在这里找到了一个使用 uniq 的示例 http://www.computerhope.com/unix/uuniq.htm,所以这就是我打算使用该命令的方式。我没有将我手动编写的文本复制到文本文件中。但是当我输入时:

uniq terminal.txt

我收到此错误消息:

uniq: terminal.txt: Illegal byte sequence

经过一番谷歌搜索,我发现我应该在 uniq 前面写 LC_ALL=C:

LC_ALL=C uniq terminal.txt

但是当我输入这个时,我会得到这个输出:

??t

这不是正确的输出。我不知道我做错了什么,我也无法在谷歌上找到答案。

有人知道我做错了什么吗?

更新:

这是od -c terminal.txt的结果:

0000000  377 376   t  \0   h  \0   i  \0   s  \0      \0   i  \0   s  \0
0000020       \0   a  \0      \0   l  \0   i  \0   n  \0   e  \0      \0
0000040   \n  \0   t  \0   h  \0   i  \0   s  \0      \0   i  \0   s  \0
0000060       \0   a  \0      \0   l  \0   i  \0   n  \0   e  \0      \0
0000100   \n  \0   t  \0   h  \0   i  \0   s  \0      \0   i  \0   s  \0
0000120       \0   a  \0      \0   l  \0   i  \0   n  \0   e  \0  \n  \0
0000140   \n  \0   t  \0   h  \0   i  \0   s  \0      \0   i  \0   s  \0
0000160       \0   a  \0   l  \0   s  \0   o  \0      \0   a  \0      \0
0000200    l  \0   i  \0   n  \0   e  \0      \0  \n  \0   t  \0   h  \0
0000220    i  \0   s  \0      \0   i  \0   s  \0      \0   a  \0   l  \0
0000240    s  \0   o  \0      \0   a  \0      \0   l  \0   i  \0   n  \0
0000260    e  \0      \0  \n  \0  \n  \0   t  \0   h  \0   i  \0   s  \0
0000300       \0   i  \0   s  \0      \0   n  \0   o  \0   t  \0      \0
0000320    a  \0      \0   l  \0   i  \0   n  \0   e  \0  \n  \0        
0000336

这是file terminal.txt的结果:

terminal.txt: Little-endian UTF-16 Unicode text

cat terminal.txt:

??this is a line

this is a line 

this is a line


this is also a line 

this is also a line 


this is not a line

【问题讨论】:

  • 你是如何创建 terminal.txt 的?在提示符下输入file terminal.txt 的结果是什么?如果您输入cat terminal.txt,您是否看到了您所期望的内容,只是上面显示的文件内容或其他任何内容?
  • od -c terminal.txt 可以很好地了解文件的内容
  • @Ed 提出了一个很好的观点,如果您可以将运行 od -c terminal.txt 的输出添加到您的问题中,它可能会帮助您自己或其他人了解问题的根源,因为本质上没有任何问题问题中显示的输入或命令。
  • 我现在已经用你评论的不同命令编辑了这个问题,但我仍然很困惑,我不确定我从中看到了什么?
  • 谢谢您的回复顺便说一句! (小旁注:在文本文件中的第一个“这是一行”之前,我什么都没有,没有换行符、空格或字符)。

标签: linux bash shell unix terminal


【解决方案1】:

您的文件采用 UTF-16 编码,uniq 无法处理。

要将文件转换为可以的 UTF-8,请执行以下操作:

iconv -f utf-16 -t utf-8 terminal.txt > terminal2.txt

然后 uniq 命令应该对您新创建的文件起作用。

为了解决这个问题,您应该努力了解您的编辑器设置并更改它们,以便您的文件存储为 UTF-8 而不是 UTF-16。

您可能还想熟悉可以在命令行上运行的简单编辑器,例如 vi/vim、emacs 或 nano,尽管这些编辑器刚开始需要一些时间来适应。这些编辑器通常创建简单的文本文件,不会出现您用于创建文件的编辑器所导致的问题。

【讨论】:

    猜你喜欢
    • 2023-03-07
    • 1970-01-01
    • 2021-06-06
    • 2015-03-14
    • 2018-09-01
    • 2012-04-30
    • 2014-05-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多