複数行を「特殊文字」で区切られた文字列に連結します。

複数行を「特殊文字」で区切られた文字列に連結します。

次のBashコマンドがあるとしましょう。

$ sha="$(git log --all --format=format:%H -n 1 -- .npp.json)"
$ git branch  --contains "$sha" | tr -d " *"

これで、次の内容が記録されることがあります。

master
dev
remotes/origin/foo

私の質問は - すべての出力を接続して次のような結果を得るためのBashユーティリティはありますか?

master:dev:remotes/origin/foo

ユーティリティは次のとおりです。

$ git branch  --contains "$sha" | tr -d " *" | concat ":"

もちろん、最終値はエコーする必要があるため、次のようになります。

$ result="$(git branch  --contains "$sha" | tr -d " *" | concat ":")"
$ echo "$result"

ベストアンサー1

どのように変えるか尋ねると

master
dev
remotes/origin/foo

到着

master:dev:remotes/origin/foo

まあ、これはtr '\n' :古典的なUNIXyアプローチになります。

可能な最後の改行を切り捨てるには、最初に出力をviaを介して変数に保存し、次に削除または置換を実行し、$()結果$()を変数に保存してからvariable=${variable%:}最終コロンまで切り取ります。 (望むよりhttps://stackoverflow.com/questions/1654021/how-can-i-delete-a-newline-if-it-is-the-last-character-in-a-fileより多くの選択のために。 )

おすすめ記事