以下の内容はhttps://devops-blog.virtualtech.jp/entry/20250430/1745979859より取得しました。


helmとhelm templateについての気づき 最終回 csplitを使ったマニフェストの分割

次にcsplitを使ったマニフェストの分割について試しました。 普段使いの環境はmacOSなのですが、csplitコマンドがインストールされていました。 どうやらHomebrewを使い始めるときにインストールする、コマンドラインツールに含まれるようです。

ChatGPTさんは次のように実行すればうまくいくと提示してくれました。

csplit -s -z -f manifest_ -b "%03d.yaml" hogehuga-myapp-manifests.yaml '/^---$/' '{*}'

ところが実行すると、csplit: illegal option -- zというエラーが表示されます。 それに対して、次のような回答がありました。

ああ、そうなんです!💡
macOS に入っている csplit は BSD版 で、-z オプション(空ファイルを削除)は GNU版のみ対応 なんです。
なので csplit: illegal option -- z のエラーが出ちゃいます。

そのあと、解決策として-zオプションを使わない方法と、GNU版 csplitを使う方法が例示されました。 なるべく余計なものをインストールしたくないので、最初の案を採用しました。

csplit -s -f manifest_ -b "%03d.yaml" hogehuga-myapp-manifests.yaml '/^---$/' '{*}'
find . -name 'manifest_*.yaml' -size 0 -delete

ところが、一つ目のコマンドを実行したタイミングでcsplit: illegal option -- bというエラーになりました。 それに対して、次のような回答がありました。

そうなんです、鋭い指摘ありがとうございます!💡
macOS の標準 csplit(= BSD版)は実は かなりオプションが少ない です。
    -b(ファイル名の書式指定)も
    -z(空ファイル削除)も
GNU版限定機能なんです。

先に言ってよw

そのあと、macOS標準で使えるBSD版のcsplitを使って頑張る方法が例示されたので実行したところ、csplit: *}: bad repetition countというエラーになりました。 そのことについて聞くと、さらにmacOS標準で使えるBSD版のcsplitを使って頑張る方法が出てきたのですが、ここで根を上げて次の方法で解決することにしました。

$ brew install coreutils
$ gcsplit -s -z -f manifest_ -b "%03d.yaml" hogehuga-myapp-manifests.yaml '/^---$/' '{*}'

これでyqを使った時と同じような結果になります。 yqを使うのとGNU版csplitを使う方法のどちらがいいかと聞かれれば、どっちもどっちみたいな感じでしょうか。

「AIは案外面倒くさいな」と思った人もいるかもしれませんが、質問をしてズバリの回答がきても面白くないと思うんですよね。 なんとなくよく聞かないと正解がもらえなかったり、いざ実行するとうまく動かなくて、情報を伝えていくとゴールに向かっていくような感じは人間くさく感じました。

今回色々はまったおかげで、少しだけ賢くなったような気持ちになりましたし..。いや嘘です。




以上の内容はhttps://devops-blog.virtualtech.jp/entry/20250430/1745979859より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14