String 如何在unix中搜索字符串并提取所需值

String 如何在unix中搜索字符串并提取所需值,string,bash,unix,search,cut,String,Bash,Unix,Search,Cut,我有一根像下面这样的线 QUERY_RESULT='88371087|COB-A#2014-04-22,COB-C#2014-04-22,2014-04-22,2014-04-23 88354188|COB-W#2014-04-22,2014-04-22,2014-04-22 88319898|COB-X#2014-04-22,COB-K#2014-04-22,2014-04-22,2014-04-22' 这是查询数据库得到的结果。现在我想获取管道之前的所有值,并用coma将其分隔。因此,需要

我有一根像下面这样的线

QUERY_RESULT='88371087|COB-A#2014-04-22,COB-C#2014-04-22,2014-04-22,2014-04-23 88354188|COB-W#2014-04-22,2014-04-22,2014-04-22 88319898|COB-X#2014-04-22,COB-K#2014-04-22,2014-04-22,2014-04-22'
这是查询数据库得到的结果。现在我想获取管道之前的所有值,并用coma将其分隔。因此,需要的输出是:

A='88371087,88354188,88319898'
db值每次都可能不同,可以只有一个值,也可以有两个或更多的值
我该怎么做。

使用
grep-oP

grep -oP '(^| )\K[^|]+' <<< "$QUERY_RESULT"
88371087
88354188
88319898
grep-oP'(^ |)\K[^ |]+'使用awk

A=`echo $QUERY_RESULT | awk '{ nreg=split($0,reg);for(i=1;i<=nreg;i++){split(reg[i],fld,"|");printf("%s%s",(i==1?"":","),fld[1]);}}'`

echo $A

88371087,88354188,88319898
A=`echo$QUERY\u RESULT | awk'{nreg=split($0,reg);for(i=1;i
$words=($(grep-oP'\S+(?=\\\\))”Bash only

shopt -s extglob

result=${QUERY_RESULT//|+([^ ]) /,}
result=${result%|*}

echo  "$result"
输出:

88371087,88354188,88319898

您是如何从查询中获得这些信息的?也许数组会更干净。您能显式地向我们显示查询语句吗?
shopt -s extglob

result=${QUERY_RESULT//|+([^ ]) /,}
result=${result%|*}

echo  "$result"
88371087,88354188,88319898