maurosmartins Posted March 12, 2009 at 09:56 AM Report Share #250116 Posted March 12, 2009 at 09:56 AM Olá a todos. Para um trabalho que tenho para uma cadeira de sistemas operativos precisava de manipular uma string dentro de um bash scrit. A string é qualquer coisa do género campo1:campo2:campo3:campo4:campo5:campo6:campo7 eu queria separar cada campo para poder colocá-lo numa variavel independente. Alguma ideia? todas as ajudas seriam bem vindas. Cumps, Mauro. Link to comment Share on other sites More sharing options...
Baderous Posted March 12, 2009 at 02:38 PM Report Share #250272 Posted March 12, 2009 at 02:38 PM Podes usar o comando cut para o efeito: #!/bin/sh campo1=`cut -d: -f1 $1` campo2=`cut -d: -f2 $1` campo3=`cut -d: -f3 $1` campo4=`cut -d: -f4 $1` campo5=`cut -d: -f5 $1` campo6=`cut -d: -f6 $1` campo7=`cut -d: -f7 $1` echo $campo1; echo $campo2; echo $campo3; echo $campo4; echo $campo5; echo $campo6; echo $campo7 No ficheiro "teste" coloquei: ananas:banana:cereja:damasco:ervilha:frango:galinha chmod 755 script ./script teste ananas banana cereja damasco ervilha frango galinha Link to comment Share on other sites More sharing options...
maurosmartins Posted March 12, 2009 at 04:38 PM Author Report Share #250312 Posted March 12, 2009 at 04:38 PM Baderous, mto obrigado pela resposta. Ao experimentar o código deparei-me com outro "problema". O comando CUT só pode ser usado em ficheiros?! eu gostaria de usar em variaveis que tivessem uma string. Existe algum comando que faça o mesmo que o CUT mas para variaveis?! Cumps, Mauro. Link to comment Share on other sites More sharing options...
Ferreira Posted March 12, 2009 at 06:00 PM Report Share #250337 Posted March 12, 2009 at 06:00 PM Se não deres um ficheiro para input ele lê do stdin. Não serve? http://twitter.com/ferreira Link to comment Share on other sites More sharing options...
maurosmartins Posted March 12, 2009 at 06:12 PM Author Report Share #250344 Posted March 12, 2009 at 06:12 PM o que eu queria fazer era algo deste género for i in $info do echo $i > temp campo1=`cut -d: -f1 temp` #campo2=`cut -d: -f2 i` #campo3=`cut -d: -f3 $i` #campo4=`cut -d: -f4 $i` #campo5=`cut -d: -f5 $i` #campo6=`cut -d: -f6 $i` #campo7=`cut -d: -f7 $i` echo "<p>$campo1</p>\n" >> $filename #echo $campo2 >> $filename #echo $campo3 >> $filename #echo $campo4 >> $filename done em que info recebe o output do comando getent passwd. Eu neste exemplo estou a usar um artificio de escrever primeiro para um ficheiro e dps usar o CUT, mas nao deve ser a soluçao mais "elegante" para se fazer. Se tiverem ideias, agradecia. Cumps, Mauro. Link to comment Share on other sites More sharing options...
JPVieira Posted March 24, 2009 at 12:27 AM Report Share #252897 Posted March 24, 2009 at 12:27 AM Fica outra duvida for name in `cut -d: -f5 utilizadores | sort -u` imagine se que o cut retornava uma coisa do tipo 'um dois tres' o for vai executar o ciclo para as strings 'um', 'dois' e 'tres' Eu queria que ele executasse o ciclo para a string inteira... De acrescentar que esse comando é aplicado a um ficheiro no formato string1:string2:string3:string4.... string5:string6:string7:string8 e eu queria executar o ciclo para por exemplo a terceira coluna de cada string, todas por ordem... Link to comment Share on other sites More sharing options...
sperezz Posted June 15, 2009 at 10:39 PM Report Share #272596 Posted June 15, 2009 at 10:39 PM Tens um filtro awk que podes usar para esse efeito awk -F':' '{print $1,$2,$3}' podes usar separadores com aspas ou caracteres se procurares por awk na net encontras bastante informação SP Link to comment Share on other sites More sharing options...
Imoogi Posted June 16, 2009 at 03:26 AM Report Share #272629 Posted June 16, 2009 at 03:26 AM tenho uma dica que acho vai facilitar, usar array, array é como uma lista de variaveis ex: nomes=("jose" "joao" "maria" "carlos") echo ${nomes[0]} echo ${nomes[1]} echo ${nomes[2]} echo ${nomes[3]} os indices sempre começa no 0, o indice 0 é jose, o indice 1 é joao, etc. 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