como executar uma função Mid no Bash

3

Eu estou tentando analisar o texto de uma string no bash que eu então posso lançar uma seleção de caso, mas estou tendo o maior problema tentando descobrir como fazer isso. Em VB eu sei que é realmente fácil como

someString = "Hey there"
Select Case Mid(someString,1,5)
 Case "Hey t" 'Do something
 Case "Go aw" 'Do something else
 Case 'Else
  'String is unrecognized
End Select 

Não consigo encontrar nada que mostre como posso fazer uma função de manipulação de strings equivalente à função Mid. Eu uso sed , eu não acredito que eu possa usar awk ou cut , já que não estou tentando aparar uma string baseada em um padrão, mas certamente tem que ser tão simples no Unix. / p>     

por mrTomahawk 05.05.2009 / 22:18

2 respostas

3

Não sei se entendi sua pergunta, pois acho que "cortar" funcionará exatamente como você deseja.

someString="Hey there"

case 'echo $someString | cut -c1-5' in
    "Hey t") echo Do something ;;
    "Go aw") echo Do something else ;;
    *) echo String is unrecognized ;;
esac
    
por 05.05.2009 / 22:44
7
someString="Hey there"
case "${someString:0:5}" in
    "Hey t" ) echo Do something ;;
    "Go aw" ) echo Do something else ;;
    * )       echo unrecognized  ;;
 esac

Isso também pode ser feito facilmente com um if, elif, else. O $ {someString: 0: 5} é a expansão de parâmetros. Saiba mais em sua seção no manual bash, e também em Gregs Bash FAQ # 73 .

Observe a outra resposta que usa o corte. Ambos funcionarão, no entanto a expansão do Parameter é mais rápida porque é melhor basear e considerar um código melhor. corte seria bom para cortar várias linhas de texto.

    
por 05.05.2009 / 22:36

Tags