计算此变量/字符串:
RES={"message":"Got an invalid (or empty) URL"}404
我把这两部分分开(在“}”的两边)这样做:
CODE=`echo $RES | awk 'BEGIN {FS="}"}{print $2}'`
RES=`echo $RES | awk 'BEGIN {FS="}"}{print $1"}"}'`
这让我成功:
CODE=404
RES={"message":"Got an invalid (or empty) URL"}
你能想到一种干净,更有效的方法吗?
例如,我想做这样的事情:
echo $RES | awk 'BEGIN {FS="}"} { CODE=$2; RES=$1;}'
我知道这很遥远,但你可以看到我的意思。
答案 0 :(得分:3)
您可以使用shell的字符串操作来执行此操作,并为分叉和执行awk节省数百万个CPU周期:
$ RES='{"message":"Got an invalid (or empty) URL"}404'
$ echo ${RES%\}*}\}
{"message":"Got an invalid (or empty) URL"}
$ echo ${RES##*\}}
404
请参阅sh(1)或bash(1)手册部分"参数扩展"详情。
答案 1 :(得分:0)
如果您有多余的CPU周期,可以使用read / awk组合
执行此操作IFS="|"; read RES CODE < <(echo {"message":"Got an invalid (or empty) URL"}404 | awk -F"}" '{print $1"}|"$2}');
当然,您可以将IFS设置为某个不可见的字符,以使其更加健壮。