テキストファイルa.txtがあり、その中の各行は2つの数字で構成されており、次のようになります。
1234 5678
ここで、a.txtのコンテンツをテキストからバイナリに変換したいと思います。つまり、数値はテキストではなく、で表示できるバイナリ表現になりますod -tu4
。
どうすればそれを行うことができbash
ますか?
テキストファイルa.txtがあり、その中の各行は2つの数字で構成されており、次のようになります。
1234 5678
ここで、a.txtのコンテンツをテキストからバイナリに変換したいと思います。つまり、数値はテキストではなく、で表示できるバイナリ表現になりますod -tu4
。
どうすればそれを行うことができbash
ますか?
これは、AWKを使用して必要な処理を実行するシェルスクリプトです。以下をファイル(hex2bin.awk)に入れます。
#!/usr/bin/awk -f
function dec2bin(n){
for(i=0;i < 4; i++){
printf("%c", n % 256);
n = int(n / 256);
}
}
{ dec2bin($1); dec2bin($2);}
ファイルを実行可能にする(chmod a+x hex2bin.awk
)
次にそれを実行します:
./hex2bin.awk a.txt | od -tu4
0000000 1234 5678
0000010
これは、ASCIIで表された10進数の2列を読み取り、それらを32ビットのリトルエンディアンバイナリに出力します。