最後の要素の後にseq -s区切り文字を使用するのはなぜですか?

最後の要素の後にseq -s区切り文字を使用するのはなぜですか?

コマンドを使用してUnixシェルチュートリアルで別の例を試しましたが、seq端末から別の結果を得ました。

注文する:

seq -s '/' 1 5

結果:

1/2/3/4/5/

変える

1/2/3/4/5

コマンドはオンラインで期待どおりに機能しますが、bash私の方法だけが異なります。

ベストアンサー1

macOSにデフォルトでインストールされる非標準ユーティリティの実装は、seqGNUシステムのcoreutilsパッケージの実装とは異なります。アップルシステムseqFreeBSDから

-smacOSでは、オプションのオプション引数として使用される文字列は、通常seqこの目的で使用されるデフォルトの改行を置き換えます。つまり、-s最後の数字を含むすべての数字の後に文字列が続きます。末尾に改行文字を挿入するには、以下を使用できます-t '\n'(この-tオプションはGNUでは使用できませんseq)。-s最後の数字の後に区切り文字が追加されます。

$ seq -s '-->' -t '[end of list]\n' 1 3
1-->2-->3-->[end of list]

coreutilsseq実装では、withを含む文字列は数字を区切るために使用されますが、-s最後の要素は常に改行文字で終わります。

両方seqの実装のこの違いは、開発者の好みや要件によるものかもしれませんが、これは私の推測にすぎません。

macOSでは、Homebrewを使用してcoreutilsseqgseq

おすすめ記事