Показать символ в позиции в файле

Я хотел бы напечатать символ в заданной позиции, используя только командную строку. Например:

<command> 5 

Выпустил бы, если 5-й символ этого файла был.

Поскольку я имею дело с большими файлами, в идеале это может обрабатывать большие файлы.

3 Solutions collect form web for “Показать символ в позиции в файле”

С sed :

 $ echo 12345 | sed 's/.\{4\}\(.\).*/\1/;q' 5 $ echo 1234ắ | sed 's/.\{4\}\(.\).*/\1/;q' ắ 

Обратите внимание, что sed не сможет выдавать выходные данные, если вы вводите недопустимые многобайтные символы в текущей локали. Вы можете использовать LC_ALL=C если вы работаете только с одиночными байтовыми символами.

С файлом ASCII вы также можете использовать dd :

 $ echo 12345 | dd bs=1 skip=4 count=1 2>/dev/null 5 

Если вы хотите 5-й байт, считая от 1:

 dd ibs=1 skip=4 count=1 

или

 tail -c +5 | head -c 1 

Обратите внимание, что tail подсчитывается от 1, поэтому с учетом файла, содержащего abcdefg , это печатает e .

dd и tail -c находятся в POSIX. head -c является общим, но не находится в POSIX; это в GNU coreutils, BusyBox, FreeBSD и NetBSd, но не в OpenBSD или Solaris.

Или используя (gnu) grep:

 grep -zoP '.{4}\K.' file 

( -z использовалось для обработки \n до 5-го символа)

  • Как удалить текстовые блоки в файле журнала?
  • Шаблоны значений для сценария bash для файлов apache conf
  • Как вы извлекаете целое слово, содержащее подстроку?
  • Печать уникальных строк
  • Вставить строку или строку после последнего экземпляра определенной переменной поиска в цикле
  • sed удалять пространство
  • Поиск строк в файлах и представление четырех строк контекста (совпадение и три следующих)
  • Как сравнить строки в двух файлах
  • Поиск текстового файла с помощью одной строки с использованием регулярных выражений
  • Повторить слова, разбитые символами дефиса и двойной символа новой строки
  • Перенести первые N строк вывода в конец без использования временного файла
  • Замените строку без учета регистра во всех файлах папок
  • Linux и Unix - лучшая ОС в мире.