Я использую оболочку AIX 6.1 ksh.
Я хочу использовать один лайнер, чтобы сделать что-то вроде этого:
cat A_FILE | skip-first-3-bytes-of-the-file
Я хочу пропустить первые 3 байта первой строки; Есть ли способ сделать это?
источник
Я использую оболочку AIX 6.1 ksh.
Я хочу использовать один лайнер, чтобы сделать что-то вроде этого:
cat A_FILE | skip-first-3-bytes-of-the-file
Я хочу пропустить первые 3 байта первой строки; Есть ли способ сделать это?
Старая школа - вы можете использовать dd
:
dd if=A_FILE bs=1 skip=3
Входной файл имеет A_FILE
размер блока 1 символ (байт), пропустите первые 3 «блока» (байта). (С некоторыми вариантами, dd
такими как GNU dd
, вы могли бы использовать bs=1c
здесь - и альтернативы, такие как bs=1k
чтение в блоках 1 килобайт в других обстоятельствах. dd
Похоже, что в AIX это не поддерживается; вариант BSD (macOS Sierra) не поддерживает c
но поддерживает k
, m
, g
и т.д.)
Есть и другие способы достижения того же результата:
sed '1s/^...//' A_FILE
Это работает, если в первой строке 3 или более символов.
tail -c +4 A_FILE
И вы могли бы использовать Perl, Python и так далее.
dd if=A_FILE bs=1 skip=3
в AIX 6.1Вместо использования
cat
вы можете использоватьtail
как таковой:Это распечатает весь файл за исключением первых 3 байтов. Проконсультируйтесь
man tail
для получения дополнительной информации.источник
/usr/xpg4/bin/tail
, по крайней мере, на моей машине. Хороший совет, тем не менее!Мне нужно было недавно сделать что-то подобное. Я помогал с проблемой полевой поддержки, и мне нужно было, чтобы техник видел графики в реальном времени, когда они вносили изменения. Данные находятся в двоичном журнале, который растет в течение дня. У меня есть программное обеспечение, которое может анализировать и выводить данные из журналов, но в настоящее время это не в режиме реального времени. Что я сделал, так это зафиксировал размер журнала до того, как начал обрабатывать данные, затем пошел в цикл, который обрабатывал бы данные, и каждый проход создавал новый файл с байтами файла, который еще не был обработан.
источник
ls
; Вы решили использоватьstat -c'%s' "${IFILE}"
вместо этогоls|awk
комбо? То есть, предполагая, что GNU coreutils ...Если у вас есть Python в их системе, можно использовать маленький скрипт на Python, чтобы воспользоваться
seek()
функцией, чтобы начать чтение с n-го байта следующим образом:И использование будет так:
Обратите внимание, что количество байтов начинается с 0 (таким образом, первый байт на самом деле является индексом 0), поэтому, указав 3, мы эффективно позиционируем чтение, чтобы начать с 3 + 1 = 4-й байт.
источник