了解 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选项是如何工作的。
有人能解释一下我的三个示例的输出吗?

答案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

相关内容