У меня есть файл, которые содержат 64 895 символов
In [95]: !wc -c 07.org
64895 07.org
Как я мог получить символ в положении 60000?
Существует эти cut
команда для этого:
tr -d '\n' < 07.org | cut -c60000
1-я часть удаляет новые строки; 2-я часть затем печатает 60000-й символ (но действительно пропускает символ новой строки поэтому, если они должны быть включены в количество к 60 000 этих работ привычки ;))
Если файл имеет новые строки, то head
и tail
может использоваться для нахождения определенного байта. Для файла символов ASCII символы эквивалентны байтам, но неASCII unicode символы занимает несколько байтов. Кроме того, символы новой строки считаются. Получить байт в положении 60000:
$ head -c 60000 file.txt | tail -c -1
, Чтобы видеть, как это работает, следующий цикл смотрит на первые 9 байтов:
$ # First the data layout
$ echo Байты 4 и 7 являются символами новой строки.
123\n56\n89'
123
56
89
$ # Now get the first 9 bytes in turn
$ for i in `seq 9`; do c=`echo Байты 4 и 7 являются символами новой строки.
123\n56\n89' | head -c $i | tail -c -1` ; echo "$i => |$c|"; done
1 => |1|
2 => |2|
3 => |3|
4 => ||
5 => |5|
6 => |6|
7 => ||
8 => |8|
9 => |9|
Байты 4 и 7 являются символами новой строки.