使用sed从文件中提取数据

时间:2014-10-08 08:04:32

标签: regex bash shell awk sed

我有一个包含以下行的文件:

{u'phone_num':u'9999999999',u'name':u'abc',u'format':u'json'}

我正在尝试从每一行中提取电话号码,即9999999999。

我使用的sed无效。

echo "{u'phone_num': u'9999999999', u'name': u'abc', u'format': u'json'}" | sed 's/.*phone_num.*\([[:digit:]]\+).*/\1/'

这是打印整行而不仅仅是数字。

2 个答案:

答案 0 :(得分:1)

您可以使用此sed:

sed "s/^{u'phone_num':[[:blank:]]*u'\([^']*\).*$/\1/" file
9999999999

答案 1 :(得分:1)

另一种使用awk

的解决方案

echo "{u'phone_num': u'9999999999', u'name': u'abc', u'format': u'json'}" | awk -F "'" '{ print $4 }'