我有一个字符串,
tester_one="update set_tables set abc=7 where bcd=9"
这里我只想提取“set”和“where”之间的部分,
abc=7
我尝试了几个 Unix 命令,但它在我希望它获取的部分之前获取了任何出现的 set 或遇到的地方。
我对如何使用 Java 有一个想法,但我对 Unix 很陌生,因为我是新手。
最佳答案
$ echo "$tester_one" | sed -E 's/.*set (.*) where.*/\1/'
abc=7
将其捕获到变量中:
$ new=$(echo "$tester_one" | sed -E 's/.*set (.*) where.*/\1/')
$ echo $new
abc=7
$ echo "$tester_one" | awk '{sub(/.*set /,""); sub(/ where.*/,""); print;}'
abc=7
如果你的 grep 支持 -P
(perl-like) 选项:
$ echo "$tester_one" | grep -oP '(?<=set ).*(?= where)'
abc=7
https://stackoverflow.com/questions/31669103/
相关文章:
php - 学说 : Set CURRENT_TIMESTAMP as default value
cordova - 地理位置总是在 cordova 应用程序中超时
sql - 如何用 SQL 删除 Oracle 数据库中的所有数据?
sql-server-2008 - sql server 2008如何计算一年中的天数
webrtc - 我们怎么知道 webRTC 何时已经完成收集 ICE 候选人
git - 为什么 git clone 有时创建一个 .git 目录,有时不创建?
google-cloud-sql - 如何将 ip 地址添加到 cloud sql 访问列表以提供对