Jump to content

Ordenar palavras


Ventura
 Share

Go to solution Solved by pwseo,

Recommended Posts

Boa tarde pessoal,

Tenho um script em linux que serve para ordenar alfabeticamente palavras.

#!/bin/bash
#Vamos inserir varias palavra e por fim o programa ordena de ordem alfabetica

echo -e "\nIntroduza palavras e digite Sair para terminar"
res=""
read pal
while [ "$pal" != "sair" ]
do
       res="$res $pal"
       read pal
done
echo "$res" | fmt -1 | sort

Ele funciona muito bem, mas não entendo o porque do fmt -1? o que é que isso faz? já utilizei o man fmt mas não encontro algo que me diga o que faz o -1.

É que se eu tirar o fmt -1 ele já não me ordena as palavras! Porquê, se o que ordena é o comando sort?

Edited by pwseo
tags code, syntax highlight.
Link to comment
Share on other sites

  • Solution

Ventura,

O programa sort só ordena as palavras se elas estiverem em linhas diferentes. E para isso é que está a ser utilizado o fmt nesse pequeno script.

Repara:

SYNOPSIS
      fmt [-WIDTH] [OPTION]... [FILE]...

DESCRIPTION
      Reformat  each  paragraph  in  the FILE(s), writing to standard output.
      The option -WIDTH is an abbreviated form of --width=DIGITS.

E mais adiante:

      -w, --width=WIDTH
             maximum line width (default of 75 columns)

Ou seja, fmt -1 é o mesmo que fmt --width=1, o que significa que estamos a forçar o tamanho máximo de cada linha para 1 letra apenas... forçando assim cada palavra a ser colocada na sua linha.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.