如何在 Bash 中执行 Mid 函数

如何在 Bash 中执行 Mid 函数

我正在尝试在 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 中它肯定必须同样简单。

答案1

我不确定我是否理解了你的问题,因为我认为“剪切”会按照你想要的方式工作。

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

答案2

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

注意使用 cut 的另一个答案。 两者都可以工作,但是参数扩展更快,因为它是 bash 的内置函数,并且被认为是更好的代码。 cut 适合跨多行文本进行剪切。

相关内容