uniq终端命令不起作用?

时间:2016-01-04 13:03:29

标签: linux bash shell unix terminal

我正在尝试学习如何使用终端命令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

1 个答案:

答案 0 :(得分:4)

您的文件采用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,尽管这些编辑器最初需要习惯。这些编辑器通常会创建简单的文本文件,这些文件不会出现用于创建文件的编辑器引起的问题。