【发布时间】: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