gpt4 book ai didi

regex - 如何从 Unix shell 变量中提取与模式匹配的子字符串

转载 作者:行者123 更新时间:2023-12-04 01:29:39 26 4
gpt4 key购买 nike

我对 Unix shell 脚本比较陌生。这是我的问题。我用过这个脚本...

isql -S$server -D$database -U$userID -P$password << EOF > $test
exec MY_STORED_PROC
go
EOF

echo $test

要生成此结果...
Msg 257, Level 16, State 1:
Server 'MY_SERVER', Procedure 'MY_STORED_PROC':
Implicit conversion from datatype 'VARCHAR' to 'NUMERIC' is not allowed. Use
the CONVERT function to run this query.
(1 row affected)
(return status = 257)

我不想回显 isql 输出,而是想提取“257”并将其粘贴到另一个变量中,这样我就可以从脚本中返回 257。我在想某种 sed 或 grep 命令会做到这一点,但我真的不知道从哪里开始。

有什么建议?

最佳答案

bash 可以从 shell 变量的内容中剥离部分。
${parameter#pattern}返回 $parameter 的值,不包括开头匹配的部分 pattern .
${parameter%pattern}返回 $parameter 的值,不包括末尾匹配 pattern 的部分.

我想有更好的方法可以做到这一点,但这应该可行。
所以你可以把它组合成:

% strip the part before the value:
test=${test#Msg }
% strip the part after the value:
test=${test%, Level*}
echo $test

如果您对 (return status = xxx) 感兴趣部分,它将是:
result=${test#*(result status = }
result=${result%)*}
echo $result

bash 联机帮助页的相关部分是“参数扩展”。

关于regex - 如何从 Unix shell 变量中提取与模式匹配的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/888735/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com