Я пытаюсь разобрать текст строки в bash, который затем могу выбрать для выбора случая, но у меня самые большие проблемы, пытаясь понять, как это сделать. В VB я знаю, что это очень просто, как
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
Кажется, я не могу найти ничего, что показало бы, как я могу выполнять функцию манипулирования строками, которая эквивалентна функции Mid. Я использую sed
, Я не верю, что могу использовать awk
или cut
поскольку я не пытаюсь обрезать строку по шаблону, но, конечно, в Unix это должно быть так же просто.
someString="Hey there"
case "${someString:0:5}" in
"Hey t" ) echo Do something ;;
"Go aw" ) echo Do something else ;;
* ) echo unrecognized ;;
esac
Это также легко можно сделать с помощью if, elif, else. $ {SomeString: 0: 5} - это расширение параметра. Узнайте больше из этого раздела в руководстве по bash, а также из Грегс Баш FAQ # 73.
Обратите внимание на другой ответ, в котором используется вырезка. Оба будут работать, однако расширение параметров происходит быстрее, потому что оно встроено в bash и считается лучшим кодом. cut хорошо подходит для разрезания нескольких строк текста.
Я не уверен, что понимаю ваш вопрос, так как думаю, что "вырезать" будет работать так, как вы хотите.
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