【问题标题】:How to Parse a flatfile in Unix / Bash and create another file [closed]如何在 Unix / Bash 中解析平面文件并创建另一个文件 [关闭]
【发布时间】:2020-05-08 21:45:05
【问题描述】:

请在下面的平面文件中查看数据
1. 任何以 ~INS 开头的行,这是行分隔符
2. 'REF*0F*' 之后的数据是成员 (10000123)
3. 'NM1*IL*1*' 之后的数据是姓 (TEST_LASTNAME) , 名字(TEST_FIRSTNAME)
4. 'DMGD8' 之后的数据是 YYYYMMDD(19030330),Gender (F)
5. 'DTP*356*D8*' 后的数据为 YYYYMMDD(20980101)
6. 'DTP*357*D8*' 后的数据为 YYYYMMDD(20990801)
7. ‘N3*’后面的数据是地址(1007 ST VILLAGE PLACE APT 3G)
7. 'N4*' 之后的数据是城市、州、邮政编码(BOSTON,MA,11233)

输入

~INSY*18*030A~REF*0F*10000123~REF*1L*854107MAAD10~REF*17*001~REF*23*H0423-UE14362M~REF* F6*6CX4MD3DY76~REF*3H*220070101-20201231~REF*ZZ*10020070101-20201231~DTP*356*D8*20080101~DTP*338*D8*20080101~DTP*339*D8*20090228~NM1*IL*1* TEST_LASTNAME*TEST_FIRSTNAME****34*068784265~PER*IPTE*7183455619~N3*1007 ST VILLAGE PLACE*APT 3G~N4*BOSTON*MA*99999~DMG*D8*19030330*F~HD* 030PDG~DTP*348*D8*20980101~DTP*349*D8*20990228~REF*XX1*001~COBP6 ~INSY*18*030A~REF*0F*10000516~REF*1L*854107MAAD10~REF*17*001~REF*23*H0423-UE14362M~REF*F6*6CX4MD3DY76~REF*3H*220070101-20201231 ~REF*ZZ*10020070101-20201231~DTP*356*D8*20090801~DTP*357*D8*20990801~DTP*338*D8*20090801~DTP*339*D8*20391231~NM1*IL*1*WOOD*DAMION ****34*068784265~PER*IPTE*7183455619~N3*1704 CROSSING DR*APT 3G~N4*WESTWOOD*NY*99999~DMG*D8*19330330*M~HD*030 PDG~DTP*348*D8*20090801~DTP*349*D8*20391231~REF*XX1*001~COB*P6***

输出
10000123~TEST_LASTNAME,TEST_FIRSTNAME~19030330,F~20980101~20990801~1007 ST VILLAGE PLACE APT 3G~波士顿,MA,99999
10000516~WOOD,DAMION~19330330,M~20090801~20391231~1704 CROSSING DR
APT 3G~WESTWOOD,NY,99999*

【问题讨论】:

  • 当有人关闭这个问题时,我编辑了这个问题,并使用 sed 提供了答案,但只有在得到受信任的社区成员批准之前,它才对我可见。我认为这是一个非常具体且重点突出的问题,我的回答可以为如何以这种方式解决问题提供指导。
  • 可能你应该说明你试图解析的格式是HIPAA ANSI 834 File Layout 这会让你的问题标题看起来更集中。此外,stackoverflow.com/questions/15470892/… 也在问类似的问题,但更普遍的是,因为他们想要处理整个格式。您在这里的需要是更具体的 IMO。
  • Try my solution online!希望能给你一些指导。

标签: bash unix awk sed


【解决方案1】:

在 Bash 中尝试这个会很痛苦。使用开源 EDI 解析器,例如可以为任何主要操作系统编译的“机器人”:http://bots.readthedocs.io

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-17
    • 2014-12-11
    • 2017-01-15
    • 2013-01-06
    • 1970-01-01
    • 2012-12-25
    • 2013-12-29
    相关资源
    最近更新 更多