Каковы некоторые способы сравнить тип файла и кодировки, чтобы разрешить багги grep …?

В этом случае у меня есть папка с файлами .txt, которые я создал с помощью перетаскивания, копирования и вставки из Adobe Acrobat PDF и текстового редактора в OSX. Я редактировал эти файлы в vim. Теперь я использую grep для поиска заметок в этих файлах. Например,

grep -c "\[t\]" Herbert* 

[t] – это примечание, и каталог имеет 22 файла с именем-префиксом Herbert* (как в Herbert-02-Transformation.txt , Herbert-14-Classification.txt ). Проблема grep только находит строку поиска в одном файле ( Herbert-03-Square.txt ), но каждый файл имеет одну и ту же ноту много раз.

Отображение файлов проблем, converted в строку состояния, когда я их открываю,

 "Herbert-02-Transformation.txt" [converted] 276L, 57171C 

Сообщение на unix.stack предполагает, что специальные символы из оригинала пережили поездку из PDF в vim, чтобы вызвать эту проблему с grep . Я удалял символы borked и вручную вставлял правильные :digraphs . Некоторые отредактированные файлы доступны для поиска по grep, а другие редактируемые файлы – нет. Я попытался использовать,

 :e Herbert-02-Transformation.txt :set encoding=utf-8` :w 

но файл все еще открывается, как показано выше. Теперь я думаю, мне нужно выяснить, как сравнить кодировки тех файлов, где работает grep и тех, где это не так. Есть достаточно страниц справки, в которых подробно описано, как настроить обнаружение файлов в .vimrc, чтобы избежать этой проблемы, которую я потратил более 1,5 часов, исследуя это, и теперь я думаю, что это хороший вопрос …

2 Solutions collect form web for “Каковы некоторые способы сравнить тип файла и кодировки, чтобы разрешить багги grep …?”

Проще всего сделать несколько строк из одного из проблемных файлов через od :

 head Herbert-02-Transformation.txt | od -c 

Или, если вы не видите ничего странного в первых строках, найдите свою конкретную строку и несколько символов вокруг нее:

 od -c Herbert-02-Transformation.txt | grep -C 5 "\[" 

Например:

 $ echo "lorem ipsum [t] dolor sit amet" > foo.txt $ od -c foo.txt 0000000 loremipsum [ t ] 0000020 dolorsitamet \n 0000037 

Любые «странные» символы будут отображаться od .


Другим полезным инструментом является file который вернет тип файла и другую информацию:

 $ file --mime foo.txt foo.txt: text/plain; charset=us-ascii 

Если у вас есть текстовый файл с известной кодировкой, с недопустимыми символами между ними, которые не принадлежат этой кодировке, вы можете отфильтровать их с помощью iconv -c -f charset -t charset file . Будьте осторожны, чтобы не перезаписать исходный файл в процессе, поскольку результат может быть катастрофическим, если вы выберете неправильную кодировку.

например, избавиться от умлаутов:

 $ echo Nähkästchen | iconv -c -f us-ascii -t us-ascii Nhkstchen 

Поиск и замена могут быть более подходящими, хотя те символы, которые у вас есть, в любом случае имеют смысл. Зависит от того, что на самом деле там.

  • Замените несколько строк другой строкой в ​​нескольких файлах
  • Как включить подсветку nano-like whitespace в vim?
  • Как я могу использовать vim для удаления первых нескольких символов выбранных строк с помощью команд?
  • Сохранение сокращений в Vim
  • Подвижная точка навигации vim, прыжки средней дальности
  • В любом случае, чтобы ориентироваться в процентах в vim?
  • Как вставить текущее имя файла в содержимое Vim?
  • Как включить и использовать сводку кода в Vim?
  • Как искать строку содержит N целевых символов / шаблонов в vim?
  • Может ли он разрешить только дерганный контент отправляться в буфер обмена, а между тем удаленный контент не работает?
  • последовательно число строк связанных изображений с vim или другим?
  • Неизвестная функция в Vim
  • Linux и Unix - лучшая ОС в мире.