Ventura Posted January 9, 2016 at 05:39 PM Report Share #591709 Posted January 9, 2016 at 05:39 PM (edited) 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 January 9, 2016 at 08:08 PM by pwseo tags code, syntax highlight. Link to comment Share on other sites More sharing options...
Solution pwseo Posted January 9, 2016 at 06:07 PM Solution Report Share #591711 Posted January 9, 2016 at 06:07 PM 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 More sharing options...
Ventura Posted January 9, 2016 at 06:26 PM Author Report Share #591713 Posted January 9, 2016 at 06:26 PM Então basicamente, ele vai ordenar as palavras que eu inseri linha a linha, correto? Muito obrigado! Link to comment Share on other sites More sharing options...
pwseo Posted January 9, 2016 at 06:45 PM Report Share #591716 Posted January 9, 2016 at 06:45 PM Não, o fmt não ordena, apenas as coloca uma em cada linha. Quem ordena as linhas é o sort. Lê bem o código para perceberes a necessidade de utilizar o fmt aí. Link to comment Share on other sites More sharing options...
Ventura Posted January 9, 2016 at 06:50 PM Author Report Share #591719 Posted January 9, 2016 at 06:50 PM Não, o fmt não ordena, apenas as coloca uma em cada linha. Quem ordena as linhas é o sort. Lê bem o código para perceberes a necessidade de utilizar o fmt aí. Sim, o que eu quis dizer foi exatamente isso! Muito obrigado Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now