ファイルのトレーラーレコードにSHA256チェックサムハッシュを追加したいと思います。
file1.txt
H this is a test
D 1
D 2
D 3
T checksum
64ビット英数字ハッシュ値を取得するには、次のコマンドを使用します。
sha256sum file1.txt >file2.txt
file2.txt
<64digituniquealphanumvalue> file1.txt
私の予想される出力ファイルは次のとおりです
file3.txt
H this is a test
D 1
D 2
D 3
T checksum <64digituniquealphanum>
しかし、次のコマンドを使用して次の出力を取得しました。
cat file1.txt file2.txt > file3.txt
file3.txt
H this is a test
D 1
D 2
D 3
T checksum
<64digituniquealphanum> file1.txt
file1
新しい行があり、私の要件は、予期されるファイル形式で指定されたファイル名を持たないunixファイルの最後の行であるTレコードタイプに64ビットの一意のチェックサムハッシュ値を追加することです。 Unixで実装する方法を教えてください。
ベストアンサー1
sed "s/^T checksum$/& $(sha256sum file1.txt | awk '{print $1}')/" file1.txt
このsed
コマンドは、「Tチェックサム」file1.txt
と空白、sha256ダイジェストのみを含む行と一致しますfile1.txt
。
あなたのものが与えられると、次のようにfile1.txt
出力されます。
H this is a test
D 1
D 2
D 3
T checksum 521967963f10f7f980c96ee7dfc832035d5fff252b134958add8a323023364d5
"Tチェックサム"行file1.txt
に何もないそれ以外の場合(たとえば、余分なスペースなど)、パターンと一致せ^T checksum$
ず、何も追加されません。