加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – 从文本文件中获取数据

发布时间:2020-12-14 05:36:54 所属栏目:百科 来源:网络整理
导读:我正在尝试使用以下结构从文本文件中提取数据: Employee: John C. 2013-01-01 10 $123 2013-01-02 12 $120 2013-01-03 8 $150Employee: Michael G. 2013-01-01 5 $13 2013-01-05 11 $20 2013-01-10 2 $155 如您所见,模式是一个包含Employee名称的表头,然后
我正在尝试使用以下结构从文本文件中提取数据:

Employee: John C.
  2013-01-01  10  $123
  2013-01-02  12  $120
  2013-01-03  8  $150
Employee: Michael G.
  2013-01-01  5  $13
  2013-01-05  11  $20
  2013-01-10  2  $155

如您所见,模式是一个包含Employee名称的表头,然后是包含其所有事务的表内容,然后重复模式.

要提取交易,我这样做:

awk '/^  [A-Z]/{print $1"t"$2"t"$3}'

这给出了这个结果:

2013-01-01  10  $123
  2013-01-02  12  $120
  2013-01-03  8   $150
  2013-01-01  5   $13
  2013-01-05  11  $20
  2013-01-10  2   $155

如何创建一个返回此的两遍提取:

2013-01-01  10  $123  John C.
  2013-01-02  12  $120  John C.
  2013-01-03  8   $150  John C.
  2013-01-01  5   $13   Michael G.
  2013-01-05  11  $20   Michael G.
  2013-01-10  2   $155  Michael G.

解决方法

awk的一种方法:

awk -F":" '/^Employee/{a=$NF;next}{print $0,a}' file

测试:

$cat file
Employee: John C.
  2013-01-01  10  $123
  2013-01-02  12  $120
  2013-01-03  8  $150
Employee: Michael G.
  2013-01-01  5  $13
  2013-01-05  11  $20
  2013-01-10  2  $155
$awk -F":" '/^Employee/{a=$NF;next}{print $0,a}' file
  2013-01-01  10  $123  John C.
  2013-01-02  12  $120  John C.
  2013-01-03  8  $150  John C.
  2013-01-01  5  $13  Michael G.
  2013-01-05  11  $20  Michael G.
  2013-01-10  2  $155  Michael G.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读