2016-01-04 4 views
0

Я пытаюсь узнать, как использовать команду терминала uniq. Я использую mac, bash shell (unix).Команда терминала uniq не работает?

это мой текстовый файл «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 

после того, как некоторые прибегая к помощи я обнаружил, что я должен написать LC_ALL = C перед Uniq:

LC_ALL=C uniq terminal.txt 

Но когда я печатаю это, я получаю этот вывод:

??t 

Это не правильный выход. Я не знаю, что я делаю неправильно, я тоже не могу найти ответ на google.

Я там кто-нибудь, кто знает, что я делаю неправильно?

обновление:

это результат 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 
+0

Как вы создали terminal.txt? Каков результат ввода 'file terminal.txt' в командной строке? Если вы наберете 'cat terminal.txt', вы видите то, что ожидаете, просто содержимое файла, как показано выше, или что-то еще? – Julian

+3

'od -c terminal.txt' может получить хорошее представление о содержимом файла –

+0

@Ed делает хорошую точку, если вы можете добавить вывод запущенного' od -c терминала.txt' на ваш вопрос, он, вероятно, поможет себе или другим понять источник проблемы, так как нет ничего неправильного в отношении ввода или команд, показанных в вашем вопросе. – Julian

ответ

4

Ваш файл закодирован в UTF-16, который uniq не может обрабатывать.

Чтобы преобразовать файл в UTF-8, который он может сделать следующее:

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

Команда уник должны работать на вновь созданный файл.

Чтобы решить эту проблему, вы должны работать, чтобы понять настройки своего редактора и изменить их, чтобы ваши файлы сохранялись как UTF-8 вместо UTF-16.

Возможно, вам также захочется ознакомиться с простыми редакторами, которые вы можете запускать в командной строке, например, vi/vim, emacs или nano, хотя эти редакторы сначала привыкают. Эти редакторы обычно создают простые текстовые файлы, которые не будут иметь проблем, вызванных редактором, который вы использовали для создания вашего файла.

Смежные вопросы