Nodachisoft Nodachi Sword Icon
  
@あまじ✎ 2021年11月9日に更新

xxdコマンドでLinuxコマンドで改行コードなどバイナリデータの置換をする方法

概要

Linuxでテキストの改行コードを削除したり、置換したり、バイナリデータの置換をする方法を備忘しています。 cygwin を使うことで Windows 上でも実行可能です。

具体的には xxd コマンドなどを利用して、一度バイナリデータを 16進テキストに置き換えてから変換をします。

sed や tr コマンドで処理できない

sed コマンドや tr コマンドなどでテキストデータを行ごとに読み込んで処理が可能ですが、 文字として認識可能な範囲以外のコードについてはうまく扱えません。

サンプル:改行コードを削除

UTF-8 で改行コードが「CR LF」のテキストについて、改行コードを削除する例です。

以下のような text.txt ファイルの改行コードを削除した、test_oneline.txt を出力してみます。

text.txt
りす
すいか
かんがるー

実際に text.txt ファイルから改行コードを削除します。

改行コードの削除例
xxd -p -c 68719476736 test.txt | sed s/0d0a//g | xxd -p -r > test_oneline.txt

出来上がったファイルは以下になり、改行が削除されています。

text_oneline.txt
りすすいかかんがるー

やってること

xxd コマンドはファイルの中身を 16 進数のテキストデータで出力したり、逆にバイナリデータに戻すことができます。 改行コードを削除した手順は以下の通りです。

  1. xxd でファイルを読み込み 16 進数のテキストデータで出力
  2. sed コマンドで改行コード(CR LF)を16進数で表現したときの文字列「0d0a」を削除
  3. xxd で削除した16進数のテキストデータをバイナリデータに変換

xxd コマンド

xxd コマンドのオプションは以下の通りです。

オプション 概要
-p 16進数のテキストで標準出力
-c 一行当たりに出力する16進数の数を指定。標準で 16。これを超えると適宜改行される。例えば「68719476736」と指定すると 64GB までのサイズについて改行せずに出力できる
-r テキストの16進数を読み込みバイナリで標準出力する

参考

変更履歴

  • なし
 
 
送信しました!

コメント、ありがとうございます。

なんかエラーでした

ごめんなさい。エラーでうまく送信できませんでした。ご迷惑をおかけします。しばらくおいてから再度送信を試していただくか、以下から DM などでご連絡頂ければと思います。

Twitter:@NodachiSoft_jp
お名前:
 
連絡先:
 
メッセージ:
 
戻る
内容の確認!

以下の内容でコメントを送信します。よろしければ、「送信」を押してください。修正する場合は「戻る」を押してください

お名前:
 
連絡先:
 
メッセージ:
 
Roboto からの操作ではないという確認のため確認キーを入れてください。
確認キー=95
戻る
 / 
送信確認へ
コメント欄
コメント送信確認へ

関連ありそうな記事(2件)です!

Linuxコマンドで字幕ファイルのsbv形式とvtt形式を手軽に変換

#Linux✎ 2021-11-09
Youtube などで利用可能な字幕ファイルのsbv形式とvtt形式を Linux コマンドで手軽に変換する方法を記載。また、手軽に Excel 上などで編集できるよう、CSV形式に変換する方法についても記載。
目次
xxdコマンドでLinuxコマンドで改行コードなどバイナリデータの置換をする方法
xxdコマンドでLinuxコマンドで改行コードなどバイナリデータの置換をする方法
概要
概要
sed や tr コマンドで処理できない
sed や tr コマンドで処理できない
サンプル:改行コードを削除
サンプル:改行コードを削除
やってること
やってること
xxd コマンド
xxd コマンド
参考
参考
変更履歴
変更履歴
Nodachisoft © 2021