我正在使用 fmt (GNU coreutils) 8.25,但我不明白如何使用它。特别是,我不明白以下结果。
$ 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
计算它插入并尝试的换行符
$ echo -n "a b c d e" | fmt -w4 -g4
但是,我得到:
a
b c
d e
Run Code Online (Sandbox Code Playgroud)
最后,我没有得到以下内容:
$ 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
选项是如何工作的。
有人可以解释我的三个例子的输出吗?
它不会回答您有关 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\}
对应于单个字符。