Wyjście XXD bez podziałów linii

13

Czy mogę powiedzieć, xxdaby nie drukować żadnych podziałów linii na wyjściu i mieć zrzut jako jedną linię ciągłą?

[user@localhost] : ~ $ echo -n "this is a long line and xxd is going to take multiple lines to print it" | xxd -p
746869732069732061206c6f6e67206c696e6520616e6420787864206973
20676f696e6720746f2074616b65206d756c7469706c65206c696e657320
746f207072696e74206974
Soczysty
źródło
5
Możesz po prostu użyć trdo usunięcia nowego wiersza, np.... | xxd -p | tr -d \\n
don_crissti
Zależy to od tego, czego potrzebujesz, ale jedną przydatną opcją xxdjest to, że ignoruje białe znaki na odwrocie zrzutu -rpostscript / zwykłego -pzrzutu (lub dowolnego zwykłego zrzutu heksadecyutycznego w tym przypadku). na przykład. Następujący wiersz jest zawijany \n, ale odwrócone wyjście jest dokładnie tym, co zostało wprowadzone: echo {1..14} | xxd -p | xxd -p -rwytwarza wyjście: 1 2 3 4 5 6 7 8 9 10 11 12 13 14\n - \npochodzi zecho
Peter.O
1
Możesz także użyć hexdump -v -e '/1 "%02X"'zamiast xxd.
dirkt 10.10.16

Odpowiedzi:

15

Potrzebna jest opcja -c.

# echo -n "this is a long line and xxd will print it as one line" | xxd -p -c 1000000

746869732069732061206c6f6e67206c696e6520616e64207878642077696c6c207072696e74206974206173206f6e65206c696e65

Oto kilka informacji z dokumentacji :

-c cols | -cols cols formatuje oktety na linię. Domyślnie 16 (-i: 12, -ps: 30, -b: 6). Max 256.

Dokumentacja mówi, że maksymalna wartość parametru „c” wynosi 256, ale próbowałem większych wartości i zadziałało. Sprawdź to:

# xxd -c 1000000 -p -l 1000000 /dev/urandom | wc -c
2000001

Zrzucam milion bajtów z / dev / random i otrzymuję ciąg 2 milionów + 1 znaków. Każdy bajt z / dev / random jest reprezentowany przez 2 znaki, a dodatkowy bajt jest ostatnim znakiem nowej linii.

Graf
źródło