Как выполнить функцию Mid в Bash
Я пытаюсь разобрать текст строки в 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.
2 ответа
Я не уверен, что понимаю ваш вопрос, так как думаю, что "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
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, а также из часто задаваемых вопросов Gregs Bash # 73.
Обратите внимание на другой ответ, который использует вырезать. Оба будут работать, однако расширение параметров происходит быстрее, потому что оно встроено в bash и считается лучшим кодом. Cut будет хорошо для резки нескольких строк текста.