カンマを区切り文字として使用して、要求されたデータを出力するようにgitコマンドを編集する方法

カンマを区切り文字として使用して、要求されたデータを出力するようにgitコマンドを編集する方法

以下のコードを実行しています。

git rev-list --objects --all |
  git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' %(id)' |
  sed -n 's/^blob //p' |
  sort --numeric-sort --key=2 |
  gcut -c 1-12,41- |
  $(command -v gnumfmt || echo numfmt) --field=2 --to=iec-i --suffix=B --padding=7 --round=nearest

gitリポジトリに大量のデータファイルを出力します。出力は次のとおりです。

ne3ee2e43e1x 1.0MiB path/to/large/files.png ID

コマンドで呼び出された各データポイント間の区切り文字としてセミコロンを使用したいと思います。したがって、予想される出力は次のようになります。

ne3ee2e43e1x; 1.0MiB; path/to/large/files.png; ID

修正する:

Marcusの答えに基づいて、以下を試してください。

git rev-list --objects --all | git cat-file --batch-check='%(objecttype);%(objectname);%(objectsize);%(rest)' | sed -n 's/^blob //p' | awk '$2 >= 2^20' | sort --numeric-sort --key=2 | gcut -c 1-12,41- |$(command -v gnumfmt || echo numfmt) --field=2 --to=iec-i --suffix=B --padding=1 --round=nearest

しかし、これは最終的に何もコピーしません。

ベストアンサー1

パラメータを使用して出力形式を直接指定できます--batch-check。したがって、フォーマット文字列にセミコロンを追加してください! 「一括出力」セクションを参照してください。git cat-fileマニュアルページ

objecttypeまた、処理したいblob出力がsedを使用して削除するのなら、あえてgitに尋ねる必要がありますか?

おすすめ記事