0

さまざまなマシンのファイルのデータを含むCSVファイルがたくさんあります。ファイルハッシュ(SHA1、MD5など)などの情報が含まれます。

ヘッダー
* MD5、SHA-1、SHA-256 *

サンプルデータ ecfc9af8d1a6e16223e1b17ea732fa08、1db05a7a663a0de3b4913bf57f55e81d2b7e3663、bf74e48e2f14dcba257473fccec3e512c7283335610205e3b84cb16449e86335

私の課題は、CSVファイルのすべてのSHA-1エントリに0xを追加する方法です。私はいくつかのことを試しましたが、何もうまくいかなかったようです。私が克服したいもう1つの小さな問題は、データをCSVに再エクスポートすると、データの各ファイルハッシュに二重引用符が追加されることです。通常、これは問題ではありませんが、この場合、これらのファイルハッシュを取得して、SQLDBからバウンスしたいと思います。これが、既存のハッシュDBと互換性を持たせるために、各エントリに0xを追加する必要がある理由です。

よろしくお願いします。

4

2 に答える 2

0

Import-Csvはいくつかの方法を提供します:

Import-Csv .\samplehash.csv -Header MD5,SHA1,SHA256

次のような出力を生成します。

MD5                                                     SHA1                                                    SHA256                                                
---                                                     -----                                                   -------                                               
ecfc9af8d1a6e16223e1b17ea732fa08                        1db05a7a663a0de3b4913bf57f55e81d2b7e3663                bf74e48e2f14dcba257473fccec3e512c7283335610205e3b84...
ecfc9af8d1a6e16223e1b17ea732fa08                        1db05a7a663a0de3b4913bf57f55e81d2b7e3663                bf74e48e2f14dcba257473fccec3e512c7283335610205e3b84...

次に、結果をforeach(%)にパイプして、SQL文字列を作成します。

Import-Csv .\samplehash.csv -Header MD5,SHA1,SHA256 | 
%{ "insert into hashes(md5,sha1,sha256) values('0x{0}','0x{1}','0x{2}')" -f $_.MD5,$_.SHA1,$_.SHA256 }

次に、これらの文字列をInvoke-SqlCmdまたは同様のもの(dbシステムによって異なります)で使用して、行を挿入します。

于 2013-02-21T20:05:46.550 に答える
0

Import-CSV を使用して CSV をインポートします。

$csv = Import-CSV import.csv;

すべての SHA-1 に 0x を追加します。

$csv | %{ $_.{SHA-1} += '0x' };

最初のデータ行のプロパティ名でヘッダー行を作成します。

$header = @(,$csv[0].psobject.properties | %{,$_.name});

エントリを行オブジェクトではなく値配列に変換します。

$data = ($csv | %{,($_.psobject.properties | select -expand value)});

引用符で囲まれたフィールドのない基本的な CSV を手動で出力します。

( $header+$data | %{ $_ -join ',' }) -join "`r`n" | sc import.csv
于 2013-02-21T20:46:58.083 に答える