【问题标题】:Using SED or AWK to separate .csv column data using a delimiter使用 SED 或 AWK 使用分隔符分隔 .csv 列数据
【发布时间】:2017-10-16 21:01:00
【问题描述】:

我正在处理包含七列的大型数据。

第 2-7 列包含以列标题名称 +“=”开头的数据。例如第 2 列包含以下数据:

Row 1: Date=2017-08-19
Row 2: Date=2017-08-19
Row 3: Date=2017-08-19
Row 4: Date=2017-08-19

例如第 3 列包含以下数据:

Row 1: Campaign=123456789
Row 2: Campaign=123456789
Row 3: Campaign=123456789
Row 4: Campaign=123456789

我需要删除前置数据(所有这些都使用字符串+“=”格式),以便每个单元格只包含实际数据。如何使用 SED 或 AWK 执行此操作,最重要的是如何将该数据导出到包含裸数据(非前置数据)的新文件中?谢谢。

11111111-1111-1111-111111111111 Date=2017-08-18 00:10:26.39242  Campaign_ID=123456789   placement_name=HELLO    event_type=Impressions  pcp=NA  package_name=WORLD
11111111-1111-1111-111111111111 Date=2017-08-18 00:27:38.416628 Campaign_ID=123456790   placement_name=HELLO    event_type=Impressions  pcp=NA  package_name=WORLD
11111111-1111-1111-111111111111 Date=2017-08-28 07:35:48.400623 Campaign_ID=123456791   placement_name=HELLO    event_type=Impressions  pcp=NA  package_name=WORLD
11111111-1111-1111-111111111111 Date=2017-08-14 09:34:12.602475 Campaign_ID=123456792   placement_name=HELLO    event_type=Impressions  pcp=NA  package_name=WORLD
11111111-1111-1111-111111111111 Date=2017-08-21 13:27:01.466864 Campaign_ID=123456793   placement_name=HELLO    event_type=Impressions  pcp=NA  package_name=WORLD
11111111-1111-1111-111111111111 Date=2017-08-12 16:42:07.427034 Campaign_ID=123456794   placement_name=HELLO    event_type=Impressions  pcp=NA  package_name=WORLD
11111111-1111-1111-111111111111 Date=2017-08-19 20:31:09.754326 Campaign_ID=123456795   placement_name=HELLO    event_type=Impressions  pcp=NA  package_name=WORLD
11111111-1111-1111-111111111111 Date=2017-08-30 14:32:28.054    Campaign_ID=123456796   placement_name=HELLO    event_type=Impressions  pcp=NA  package_name=WORLD
11111111-1111-1111-111111111111 Date=2017-08-09 12:08:31.876589 Campaign_ID=123456797   placement_name=HELLO    event_type=Impressions  pcp=NA  package_name=WORLD
11111111-1111-1111-111111111111 Date=2017-08-21 22:03:17.1221   Campaign_ID=123456798   placement_name=HELLO    event_type=Impressions  pcp=NA  package_name=WORLD

【问题讨论】:

    标签: csv awk sed delimiter


    【解决方案1】:

    sed解决方案:

    sed 's/[^[:space:]=]*=//g' file > newfile
    

    【讨论】:

    • 嘿,所以你提供的解决方案有点工作。它从列中删除了前置字符串 +“=”,但是它从列 3-6 中删除了所有数据。此外,它将数据输出到单个列中,这意味着它将第 2 列和第 7 列的数据合并到一个单元格中,用于每一行数据。
    • @pghInitechBranch,而不是拖尾您的本地结果的详细信息 - 更新您发布所有实际列的问题。 (即发布实际数据)
    • 已更新为 csv 示例。
    • @pghInitechBranch,适用于您发布的输入。见截图ibb.co/mV9wi6
    • 谢谢!不知道为什么我第一次运行该命令时有不同的输出。正如我之前提到的,输出仍然组合在一个单元格中。如何获取它以便将每个值(日期、Campaign_ID、展示位置等)放置在自己的单元格中?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-18
    相关资源
    最近更新 更多