SED(または他のcoreutil)を使用してCSV列形式を再指定する

SED(または他のcoreutil)を使用してCSV列形式を再指定する

hashdeepの出力ファイルの次のフラグメントが提供されます。

7241,11111111111111111111111111111111,\01-data\file1
1237241,22222222222222222222222222222222,\01-data\file2
41,33333333333333333333333333333333,\01-data\file3

次のようにフォーマットするにはどうすればよいですか?

   7241,11111111111111111111111111111111,\01-data\file1
1237241,22222222222222222222222222222222,\01-data\file2
     41,33333333333333333333333333333333,\01-data\file3

sedを使いたいのですが(これが私が慣れ始めたので)、特定の列に現れる文字だけを変更するようにsedに指示する方法はありますか?

もちろん、他の方法があれば喜んでお知らせします。

-j0その理由は、hashdeepで(シングルスレッド)オプションを使用せずに2つの出力ファイルを比較できるように、ファイル名の出力をソートしたいからです。

ベストアンサー1

そしてawk

awk -v l="$(wc -L <file)" '{printf "%"l"s\n", $0}' file
  • -vawk変数に外部値を割り当てますl
    • wc -L <fileファイル内の最長行の長さを探します。
  • printf "%"l"s\n", $0各行を印刷して空白で埋めますl。 10個のスペースの場合、次のようになりますprintf "%10s\n", $0

出力:

   7241,11111111111111111111111111111111,\01-data\file1
1237241,22222222222222222222222222222222,\01-data\file2
     41,33333333333333333333333333333333,\01-data\file3

おすすめ記事