Как показано здесь, главная загрузочная запись MBR ()относительно проста;https://en.wikipedia.org/wiki/Master_boot_record.
Когда вы используете /dev/urandom
, вы всегда можете создать что-то похожее на таблицу разделов.Решение состоит в том, чтобы заполнить области таблицы разделов нулями и использовать dev/urandom
для остальных.
Linux также поддерживает другие дополнительные форматы дисков, которые также потенциально могут срабатывать, вызывая появление «недействительных» разделов при заполнении случайными данными.
Вам нужно включить пробел в свой класс персонажа:
echo 'word1 word2"word2 word4"word5' |
awk -F '[ "]' '{ for (i = 1; i <= NF; ++i) { print $i } }'
Вам нужен IP-адрес и пользовательский агент.
IP-адрес — это второе слово, разделенное пробелом -. Он будет в $2
в awk
со значением по умолчанию FS
.
Пользовательский агент — это строка в последней подстроке с двойными кавычками. Вы можете получить это, удалив последнюю двойную кавычку, а затем удалив все до того, что теперь является последней двойной кавычкой.
Сawk
:
awk '{ ip = $2; sub("\"$",""); sub(".*\"",""); ua = $0; print ip; print ua }'
или, немного короче,
awk '{ ip = $2; sub("\"$",""); sub(".*\"",""); print ip; print }'
Сsed
:
sed -e 'h' -e 's/[^ ]* //;s/.*//p' \
-e 'g' -e 's/"$//;s/.*"//'
При этом сначала сохраняется строка в удерживаемом пространстве (h
), затем извлекается номер IP путем удаления до первого пробела, а затем из (теперь )первого пробела. Это изолирует номер IP, который печатается. Затем извлекается сохраненная строка(g
)и применяется та же процедура, что и в коде awk
, т.е. удаляется последняя двойная кавычка, а затем все до (теперь )последней двойной кавычки.
Обе команды печатают номер IP в одной строке, а затем строку пользовательского агента в следующей.