在Unix中从变量中提取数据

时间:2015-07-28 10:13:14

标签: bash unix

如果我的变量数据为

test="score=5,grade=d,pass=f,"

无论如何,我可以从变量中提取数据/重写数据,

test="score,grade,pass"

我不需要=&,字符之间的数据。

2 个答案:

答案 0 :(得分:5)

在纯bash中(不需要像sed或awk或perl这样的外部工具),可以使用“参数扩展”来操作字符串。您可以在Bash的手册页中阅读此内容。

#!/usr/bin/env bash

test="score=5,grade=d,pass=f,"

# Use the "extglob" shell option for "extended" notation on patterns.
shopt -s extglob

# First, remove the bits from equals to before each comma...
test="${test//=+([^,]),/,}"

# Next, remove the trailing comma.
test="${test%,}"

echo "$test"

here's a demo

答案 1 :(得分:0)

您可以使用sed。

echo "score=5,grade=d,pass=f," | sed 's/=[^,]*\(,$\|\)//g'

echo "score=5,grade=d,pass=f," | sed 's/=[^,]*\|,$//g'

DEMO