выводить только блоки размером n со смещением, кратным шагу k от начала двоичного ввода в оболочке - PullRequest
1 голос
/ 05 июня 2011

учитывая размер блока n и другой размер k, я ищу способ вывода только блоков со смещением от начала ввода, кратного k.

представьте себе файл, состоящий из 4-х наборов 2-байтовых данных. теперь с учетом этого ввода я хочу только первую запись каждого кортежа.

пример ввода:

00 00 11 11 22 22 33 33
44 44 55 55 66 66 77 77
88 88 99 99 aa aa bb bb
cc cc dd dd ee ee ff ff

пример вывода с n = 2 и k = 8:

00 00 44 44 88 88 cc cc

, который является только первым «столбцом» ввода.

Теперь, хотя это было бы просто сделать в perl, python, мне нужна эта функциональность в сценарии оболочки, поскольку в целевой системе нет perl или python, а есть только базовые утилиты. Я надеюсь, что есть способ неправильно использовать существующий инструмент для этого. Если это невозможно, я напишу что-нибудь на C, но я бы хотел этого избежать.

Один из вариантов использования - извлечь один аудиоканал из необработанного аудиофайла.

1 Ответ

0 голосов
/ 05 июня 2011

Термин, который вы можете искать (кроме "полосок зебры") - это "шаг".Это то, что некоторые люди называют этой идеей пропускать k байтов каждый раз.

Из вашего поста не совсем ясно, но похоже, что вы действительно хотите иметь возможность вставить этот фильтр в конвейер и использовать его в необработанном виде.байт и вывод одинаковый.Если это так, я не уверен, как это можно легко сделать простым сценарием оболочки, поэтому я бы посоветовал вам либо прогуляться и написать его на C, либо установить Python или что-то еще установленное в целевой системе.

...