我有一个包含如下文本的文件:
"id":1519539,"description":"xxxxxxxx","severity":"yyy","pasahelpdesk":null,"subSource":"","dateReception":{"timezone":{"name":"Europe\/France","timestamp":1549493320},"sg_datatables_editable":[
false,false,false,false,false,false,false,false,false,false,false]},{
"id":1519540,"description":"xxxxxxxx","severity":"yyy","pasahelpdesk":null,"subSource":"","dateReception":{"timezone":{"name":"Europe\/France","timestamp":1549493340},"sg_datatables_editable":[
false,false,false,false,false,false,false,false,false,false,false]},{
我正在尝试获取时间戳的值。我正在尝试:
sed "s/.*timestamp\":\(.*\).*$/\1/g"
但它给出了时间戳的值以及直到行尾的所有值:
1549493320},"sg_datatables_editable":[
false,false,false,false,false,false,false,false,false,false,false]},{
1549493340},"sg_datatables_editable":[
false,false,false,false,false,false,false,false,false,false,false]},{
我怎样才能获得:
1549493320
1549493340
答案1
答案2
有两个问题:
- 你打印了不匹配的行
- 你匹配太多了
第一个问题可以通过使用-n
and来解决p
,第二个问题可以通过缩小匹配范围来解决,例如使用 ERE:
sed -nE 's/.*"timestamp":([0-9]+).*/\1/p'