Погуглив еще, я нашел этот вопрос: Изменить заголовок в огромном файле, не перезаписывая весь файл.
Чтобы избежать перезаписи всего файла при добавлении в заголовок, я напечатал фиктивный заголовок минимального количества байтов (дополняя нулями) при создании файла:
awk 'NR==1{print "dummyhead100\tdummyhead20000"; next} $3==1 {print
$1"\t"$2}' input > output
Затем я создаю файл (или строку переменная) с новым заголовком в качестве header.tsv и замените фиктивный заголовок на месте (убедившись, что фиктивный и новый заголовки имеют одинаковое количество байтов), используя dd
:
dd conv=notrunc obs=1 if=header.tsv of=output
Таким образом output
редактируется на месте, и мне не нужно ждать, пока будет скопирован весь файл, или хранить его в памяти.
handle SIG33
сообщает gdb
, как обрабатывать сигнал 33; в версии, которую вы даете, pass
означает передачу сигнала, nostop
говорит отладчику не останавливаться при испускании сигнала и noprint
ничего не печатать.
Директивы такого типа полезны при отладке сред выполнения, которые используют внутренние сигналы. Сигнал 33 используется на Android компанией Bionic (для обратной -трассировки ); если вы не будете игнорировать это там, вы в конечном итоге будете останавливаться все время. Вы увидите аналогичные инструкции для Flash (с сигналами 32 и 33 как минимум, IIRC ).