Почему это слово не может быть grep?

Страница руководства для dd говорит:

  of=FILE    write to FILE instead of stdout

Теперь вы можете использовать специальный файл для вывода. Блочное устройство, такое как /dev/sda (целый «диск» )или /dev/sdaN (раздел ). ddв любом случае заполнит, т.е. перезапишет ваш терминал/стандартный вывод, ваш файл или ваш раздел.

Способом управления этим может быть операнд seek=, чтобы пропустить количество выходных блоков. Но вы не должны использовать раздел как ленточный накопитель!

Пример #4, на который вы ссылаетесь, хорошо показывает «тонкую» разницу между /dev/sda и /dev/sda1. В противном случае эта ссылка является просто базовой демонстрацией команды dd. Вы можете «создать резервную копию» или «клонировать» «жесткий диск» с помощью dd, но вы не можете легко «добавить данные».

Но для записи в зашифрованный раздел с помощью dd? Как это работает?

Да, bs=1Mдолжно быть намного быстрее.

Добавляю этот старый Q :ДД и свободное пространство

2
13.11.2021, 04:36
4 ответа

Ну, не уверен, что это ваша проблема, но одной из возможных причин невозможности найти правильную строку являются две кодировки буквы é. Есть символ Unicode U+00E9 (латинская строчная буква E с острым знаком ), который сам по себе является целым глифом; и есть комбинация eи U+0301 (Сочетание острого ударения ). Представления UTF -8 для них будут c3 a9и 65 cc 81в шестнадцатеричном формате.

Копирую текст из вашего вопроса, получается буква U+00E9.

Так:

$ grep ^patético file.txt    # no output
$ grep ^patético file.txt
patético, ca. (Del lat. patheticus,...

И, конечно же, в зависимости от того, как настроена система, могут возникнуть проблемы с вводом символа в первую очередь, но вы можете обойти это с помощью чего-то вроде:

$ grep $'^pat\xc3\xa9tico' file.txt
patético, ca. (Del lat. patheticus,...    

Преобразование в ISO 8859 -1 превращает его в один байт e9, поэтому в локали Cдля сопоставления будет достаточно одного .. Хотя, по крайней мере, в моей системе с локалью UTF -8 одинокий байт e9был бы недопустимым символом, и .не соответствовал бы ему.

Хотя, конечно, это все еще недопустимый символ для моего терминала UTF -8, поэтому вывод выглядит следующим образом:

$ iconv -f utf8 -t latin1 file.txt  | LC_ALL=C grep $'^pat.tico'
pat�tico, ca. (Del lat. patheticus,...
2
13.11.2021, 18:49

Некоторое время, если оно содержит лишние пробелы в начале, поэтому мы использовали подстановочный знак ниже

grep "[[:space:]]*\?patético," file

выход

patético, ca. (Del lat. patheticus, y este del gr. o, que impresiona, sensible). 1. adj. Que   es capaz de mover y agitar el ánimo infundiéndole afectos vehementes, y con particularidad   dolor, tristeza o melancolía.     
-2
13.11.2021, 08:13

Как предложил @cas, передача ввода utf -8 через iconv может помочь. Попробуйте

iconv -f utf-8 -t CP1252 rae.txt | grep -e '^patético'

Просто убедитесь, что консоль работает с кодовой страницей Win1252 или Latin1.

Протестировано с busybox -w32 v1.33 на Win10 и v1.29 на TinyCore10.

Если вы используете настоящую разновидность *nix, вам следует проверить и/или исправить кодовую страницу вашей консоли, как намекнул @Inian, чтобы она заработала.

Приложение

Обратите внимание, что вы можете не угадывать CharCodes букв в чистых 8-битных кодовых страницах, просто выполняя поиск

cat rae.txt | grep -e '^pat.tico'

или двумя (или сколько угодно )точками в UTF -8.

cat rae.txt | grep -e '^pat..tico'

Ваш пробег может отличаться.

2
13.11.2021, 17:44

ДА! СПАСИБО ВАМ, РЕБЯТА.:)

В итоге у меня получилось преобразовать файл из UTF-8в ISO8859-1. И использование регулярных выражений вместо подстановочных знаков. Я, наконец, получил определение, которое я ищу.

grep -e '^pat.tico'./rae-iso88591.txt

Урожайность

patético, ca. (Del lat. patheticus, y este del gr. o, que impresiona, sensible). 1. adj. Que   es capaz de mover y agitar el ánimo infundiéndole afectos vehementes, y con particularidad   dolor, tristeza o melancolía.     

0
13.11.2021, 18:21

Теги

Похожие вопросы