我有一个字符串,
tester_one="update set_tables set abc=7 where bcd=9"
这里我只想提取“set”和“where”之间的部分,
abc=7
我尝试了几个 Unix 命令,但它在我希望它获取的部分之前获取了任何出现的 set 或遇到的地方。
我对如何使用 Java 有一个想法,但我对 Unix 很陌生,因为我是新手。
最佳答案
使用 sed
$ 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
使用 awk
$ echo "$tester_one" | awk '{sub(/.*set /,""); sub(/ where.*/,""); print;}'
abc=7
使用 grep -P
如果你的 grep 支持 -P
(perl-like) 选项:
$ echo "$tester_one" | grep -oP '(?<=set ).*(?= where)'
abc=7
关于bash - 在 Unix 中提取变量中两个字符串之间的部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31669103/