改行なしのxxd出力

改行なしのxxd出力

xxd出力に改行を印刷せずに1つの連続行にダンプするように言うことはできますか?

[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

答え1

必要なのは -c オプションです。

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

746869732069732061206c6f6e67206c696e6520616e64207878642077696c6c207072696e74206974206173206f6e65206c696e65

次は文書:

-c列| -cols cols 1行あたりのオクテット形式を指定します。デフォルトは16(-i:12、-ps:30、-b:6)です。最大256個。

ドキュメントには「c」パラメータの最大値が256となっていますが、より大きな値を試してみましたが、正しく機能しました。確認してください:

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

ここでは、/dev/randomから100万バイトをダンプし、200万 + 1個の文字列を取得します。 /dev/randomの各バイトは2文字で表され、追加バイトは最後の改行文字です。

答え2

バージョンxxd2022-01-14(付属)vim8.2.4088)以上では、-pandを使用し-cてその値を0に設定できるようになりました。マニュアルページ:

-c リスト|-cols リスト

滞在リスト一行につきオクテット。デフォルトは16(-i:12、-ps:30、-b:6)です。最大256個。最大値はありません-ps。の場合、-ps0 は長い出力行を生成します。

たとえば、

$ echo "Lorem Ipsum is simply dummy text of the printing and typesetting industry." | xxd -p -c0 
4c6f72656d20497073756d2069732073696d706c792064756d6d792074657874206f6620746865207072696e74696e6720616e64207479706573657474696e6720696e6475737472792e0a

関連情報