Entendendo fmt (gnu coreutils)

4

Estou usando o fmt (GNU coreutils) 8.25 e não consigo entender como usá-lo. Em particular, não entendo os seguintes resultados.

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

    Eu esperava obter

    a b
    c d
    e
    

    mas eu recebo

    a 
    b
    c 
    d
    e
    

    Então eu pensei que talvez fmt contasse o linebreak que ele insere e tentou

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

    Mas eu recebo:

    a
    b c
    d e
    

    Finalmente, não obtenho o seguinte:

  3. $ echo -n "a b c d e" | fmt -w4 -g1 que eu esperava dar

    a 
    b
    c 
    d
    e
    

    mas, em vez disso, resulta novamente em

    a
    b c
    d e
    

Então, obviamente, eu não consigo entender como funcionam as opções -w e -g .
Alguém poderia explicar a saída dos meus três exemplos?

    
por Thomas 17.12.2017 / 11:53

2 respostas

0

Ele não responderá à sua pergunta sobre coreutils ' fmt , mas você também poderá resolver seus casos de manipulação de string com sed :

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

resultado:

a b 
c d 
e

.\{1\} corresponde a um único caractere.

    
por 17.12.2017 / 14:08
0

O resultado pretendido pode ser obtido também com xargs, como em:

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

produzindo

a b
c d
e

E não apenas para caracteres únicos:

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

produzindo:

one two
three four
five

Felicidades ... felicidades, drl

    
por 23.12.2017 / 16:13