如何使用sed捕获字符串中的所有数字

时间:2018-01-22 11:45:14

标签: shell sed

我尝试使用sed使用以下脚本捕获字符串中的数字:

echo '["770001,德邦优化混合","750005,安信平稳增长混合发起A"]' | sed -n 's/.*"\(\d{6}\),/\1/p'

我的期望是回声

770001
750005

虽然没有输出。为什么呢?

1 个答案:

答案 0 :(得分:1)

如果您对awk感到满意,那么关注awk可能对您有所帮助。由于我的版本为awk,因此我使用--re-interval如果你有更新版本的awk,那么你可能不需要它。

echo '["770001,德邦优化混合","750005,安信平稳增长混合发起A"]' |
awk --re-interval '{while(match($0,/[0-9]{6}/)){print substr($0,RSTART,RLENGTH);$0=substr($0,RSTART+RLENGTH+1)}}'

输出如下。

770001
750005