“Grep-луг” от до B в выводе hexdump

Это типично для программ, чтобы вынудить "some_string" часть быть последним аргументом так, чтобы .abc.ksh "some_string" -a "sample text" ошибка. Если Вы делаете это, то после парсинга опций, $OPTIND содержит индекс к последнему аргументу ( "some_string" часть).

Если это не приемлемо, то можно проверить вначале (перед вводом while видеть, существует ли неснабженный префиксом аргумент. Это позволит Вам иметь "some_string" вначале и в конце. Если бы у Вас должен был быть он в середине, то Вы не могли бы или использовать getopts или у Вас могло быть два набора getopts. Когда первая ошибка, это могло произойти из-за неснабженного префиксом аргумента; получите его и запустите новое getopts получить остающийся args. Или можно пропустить getopts все вместе и решение для самокрутки.

3
08.05.2012, 20:50
3 ответа

Это могла бы быть лучшая идея сохранить это строго двоичным, как упомянуто здесь bbe кажется, инструмент для задания. Следующая команда пишет JPEGs для обнуления дополненных числовых файлов.

bbe -s -b '/\xff\xd8/:/\xff\xd9/' -e 'w %05B.jpg' > /dev/null
2
27.01.2020, 21:20

непротестированный

awk '
  /ff d8/ || ($2 == "d8" && ff_prevline) {p = 1}
  p {print}
  /ff d9/ || ($2 == "d9" && ff_prevline) {p = 0}
  {ff_prevline = ($NF == "ff")}
'
1
27.01.2020, 21:20

Один способ использовать perl. Это произведет только что диапазон байтов между ff 8d и ff 9d, без номеров строки:

Принятие следующих данных как содержание infile:

0010400 ff d8 ff e0 00 10 4a 46 49 46 00 01 01 00 00 01
0010410 00 01 00 00 ff fe 00 3c 43 52 45 41 54 4f 52 3a
0030f50 3e e9 fb a4 54 37 70 7f cb 55 03 fd af f1 a2 32
0030f60 e8 26 8f ff d9 00 00 00 00 00 00 00 00 00 00 00

Выполненный затем perl острота:

perl -ne '
    if ( (my $start = m/ff\sd8/) .. (my $end = m/ff\sd9/) ) { 
        s/\S*\s//; 
        s/\A.*(?=ff\sd8)// if $start; 
        s/(?<=ff\sd9).*\Z// if $end; 
        print 
    }
' infile

Это даст следующий вывод:

ff d8 ff e0 00 10 4a 46 49 46 00 01 01 00 00 01                                                                                                                                                                                              
00 01 00 00 ff fe 00 3c 43 52 45 41 54 4f 52 3a                                                                                                                                                                                              
3e e9 fb a4 54 37 70 7f cb 55 03 fd af f1 a2 32                                                                                                                                                                                              
e8 26 8f ff d9
1
27.01.2020, 21:20

Теги

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