fmt(gnu coreutils)について学ぶ

fmt(gnu coreutils)について学ぶ

fmt(GNU coreutils)8.25を使用していますが、どのように使用するのかわかりません。特に、次の結果がわかりません。

  1. $ echo -n "a b c d e" | fmt -w3 -g3

    得ることを期待

    a b
    c d
    e
    

    しかし、私は理解しています

    a 
    b
    c 
    d
    e
    

    だから私はfmtそれを挿入しようとした改行を数えることができると思いました。

  2. $ echo -n "a b c d e" | fmt -w4 -g4

    しかし、私は次のような結果を得ます。

    a
    b c
    d e
    

    最後に、次のメッセージは表示されません。

  3. $ echo -n "a b c d e" | fmt -w4 -g1 あげると期待する

    a 
    b
    c 
    d
    e
    

    しかしそれは

    a
    b c
    d e
    

-wだから明らかに、オプションがどのように機能するのかわかりません-g
誰かが私の3つの例の結果を説明できますか?

答え1

coreutils 'の質問に対する回答ではありませんが、次のようにfmt文字列操作のケースを解決することもできますsed

printf "a b c d e\n" | sed 's/.\{1\} .\{1\} /&\n/g'

結果:

a b 
c d 
e

.\{1\}単一文字に対応します。

答え2

次のように、xargsを使用して予想される結果を得ることもできます。

printf "a b c d e\n" | xargs -n2 -d" "

生産

a b
c d
e

単一文字だけでなく:

printf "one two three four five\n" | xargs -n2 -d" "

生産:

one two
three four
five

頑張って...乾杯、drl

関連情報