我想这一定是被问过几次了,但是我根本找不到合适的比赛。我想有时候您只是无法想到正确的搜索。
所以,这是我的问题-我想在脚本中分析如下的SQL字符串:
select * from my_table where col1 = #ABC# and col2 like "%#DEF#%";
我想以某种方式通过解析定界ABC
来提取令牌DEF
和#
。尝试使用sed
,我得到类似的东西:
# echo "something#ABC#else" | sed 's/.*\(#..*#\).*/\1/g'
#ABC#
但是,如果有更多的话,它只会捕获一个:
# echo "something#ABC#else something#DEF#else" | sed 's/.*\(#..*#\).*/\1/g'
#DEF#
似乎我在这里犯错了-有更好的方法吗?
答案 0 :(得分:1)
$ echo "something#ABC#else something#DEF#else" | grep -oP '(?<=#)[A-Z0-9a-z]+(?=#)'
ABC
DEF
使用grep lookbehind
答案 1 :(得分:1)
假设:
onclick(node) {
alert(node.key)
},
)的数量为偶数,例如'#ABC#def#GHI#'有效,但'#ABC#def#'无效使用偶数分隔符,我们可以让#
显示偶数字段,例如:
awk
$ echo "something#ABC#else something#DEF#else" | awk -F"#" '{ for (i=2; i<=NF; i+=2) { print $i } }'
ABC
DEF
-将-F"#"
指定为#
输入字段定界符awk's
-使用for (i=2; i<=NF; i+=2)
作为索引遍历偶数字段i
-打印print $i
字段或者,如果您想消除该子外壳(由ith
调用),则可以使用here字符串:
echo ... |