Как получить вывод Hexdump в том же формате, что и hexedit?

Ниже приведены 2 метода. Второй метод, который использует seq + date , чтобы имитировать то, о чем спрашивал ваш вопрос. Однако этот метод с использованием / dev / urandom и fold создаст случайные числовые строки любой длины, которую вы хотите.

Способ №1. Использование / dev / urandom + fold

Вы можете использовать такую ​​команду для генерации случайной строки фиксированной длины.

$ tr -dc '0-9' 1m-example.txt

Результатом будет следующий тип вывода:

$ head -5 1m-example.txt
405295373332357365
317790052799018265
512803158528955068
838448126037265342
014951048334094344

Время:

real    0m30.261s
user    0m1.700s
sys     0m29.976s

Метод №2. Использование seq + date

Примерно так будет генерировать пакетные данные, которые затем могут быть переданы по конвейеру до date за один вызов:

$ seq -f @%12.0f 1 1000000 | date -f - '+%s%N' > 1m-example.txt

Что происходит?

$ seq -f @%12.0f 1 1000000 | head -5
@           1
@           2
@           3
@           4
@           5

Результатом такого типа вывода:

$ seq -f @%12.0f 1 1000000 | head -5 | date -f - '+%s%N'
1000000000
2000000000
3000000000
4000000000
5000000000

] Time:

real    0m8.647s
user    0m3.547s
sys     0m5.971s

Но это кажется совершенно ненужным, поскольку вам, кажется, просто нужно 1MM строк случайных данных определенного формата / типа. В этом случае я бы сделал что-то вроде решения @Graeme , используя вместо этого printf с расширением скобок оболочки.

0
24.10.2018, 12:05
2 ответа

Не все так просто и не очевидно... попробуй

 hexdump -v  -e '"%08.8_ax  "' -e' 4/1 "%02x " "  " 4/1 "%02x " "  "  4/1 "%02x " "  " 4/1 "%02x "  ' -e '" |" 16/1 "%_p" "|\n"' file
4
28.01.2020, 02:31

Вместо использования шестнадцатеричного дампа я бы предложил использовать xxd, например:

xxd <bin_name>
00000000: cffa edfe 0700 0001 0300 0080 0200 0000 ................
00000010: 1000 0000 d006 0000 8580 2100 0000 0000 ..........!.....
00000020: 1900 0000 4800 0000 5f5f 5041 4745 5a45 ....H...__PAGEZE
00000030: 524f 0000 0000 0000 0000 0000 0000 0000  RO..............
00000040: 0000 0000 0100 0000 0000 0000 0000 0000 ................

Если вы хотите |вокруг букв ascii в конце, попробуйте это:

xxd <bin_name> |  sed -r 's/(................)$/|\1|/g'
00000000: cffa edfe 0700 0001 0300 0080 0200 0000  |................|
00000010: 1000 0000 d006 0000 8580 2100 0000 0000  |..........!.....|
00000020: 1900 0000 4800 0000 5f5f 5041 4745 5a45  |....H...__PAGEZE|
00000030: 524f 0000 0000 0000 0000 0000 0000 0000  |RO..............|
00000040: 0000 0000 0100 0000 0000 0000 0000 0000  |................|
2
28.01.2020, 02:31

Теги

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