如何使用sed从逗号分隔的字符串中提取数字?

时间:2020-04-04 17:11:06

标签: regex sed

我设法提取以下响应并将其用逗号分隔。这是逗号分隔的字符串,我只对account_id的逗号分隔值感兴趣。如何使用sed模式匹配?

输入ACCOUNT_ID,711111111119,ENVIRONMENT,dev,ACCOUNT_ID,111111111115,dev

预期的输出711111111119, 111111111115

我的$input变量存储输入

我尝试了下面的方法,但是它把所有数字都加入了,我想保留逗号','

echo $input | sed -e "s/[^0-9]//g"

2 个答案:

答案 0 :(得分:3)

我认为您最好与awk一起使用:

awk -v FS=, '{for(i=1;i<=NF;i++)if($i~/[0-9]/){printf sep $i;sep=","}}'

如果您真的想sed,可以参加

sed -e "s/[^0-9]/,/g" -e "s/,,*/,/g" -e "s/^,\|,$//g"

答案 1 :(得分:1)

$ awk '
BEGIN {
    FS = OFS = ","
}
{
    c = 0
    for (i = 1; i <= NF; i++) {
        if ($i == "ACCOUNT_ID") {
            printf "%s%s", (c++ ? OFS : ""), $(i + 1)
        }
    }
    print ""
}' file
711111111119,111111111115
相关问题