我正在使用 fmt (GNU coreutils) 8.25,但我不明白如何使用它。特别是,我不明白以下结果。
$ echo -n "a b c d e" | fmt -w3 -g3
我期望获得
a b c d e
但我得到
a b c d e
所以我想也许可以
fmt
计算它插入的换行符并尝试过$ echo -n "a b c d e" | fmt -w4 -g4
但后来,我得到:
a b c d e
最后,我没有得到以下信息:
$ 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