理解 fmt (gnu coreutils)

Tho*_*mas 5 shell coreutils

我正在使用 fmt (GNU coreutils) 8.25,但我不明白如何使用它。特别是,我不明白以下结果。

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

    我期望获得

    a b
    c d
    e
    
    Run Code Online (Sandbox Code Playgroud)

    但我明白了

    a 
    b
    c 
    d
    e
    
    Run Code Online (Sandbox Code Playgroud)

    所以我想可能会fmt计算它插入并尝试的换行符

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

    但是,我得到:

    a
    b c
    d e
    
    Run Code Online (Sandbox Code Playgroud)

    最后,我没有得到以下内容:

  3. $ echo -n "a b c d e" | fmt -w4 -g1 我希望给

    a 
    b
    c 
    d
    e
    
    Run Code Online (Sandbox Code Playgroud)

    而是再次导致

    a
    b c
    d e
    
    Run Code Online (Sandbox Code Playgroud)

所以,显然我无法理解-w-g选项是如何工作的。
有人可以解释我的三个例子的输出吗?

Jun*_*Jun 0

它不会回答您有关 coreutils' 的问题,但您也fmt可以使用以下方法解决字符串操作案例:sed

printf "a b c d e\n" | sed 's/.\{1\} .\{1\} /&\n/g'
Run Code Online (Sandbox Code Playgroud)

结果:

a b 
c d 
e
Run Code Online (Sandbox Code Playgroud)

.\{1\}对应于单个字符。