我正在尝试在 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 适合跨多行文本进行剪切。