首页 > 解决方案 > awk 将空格后的信息复制到新列

问题描述

我有一个小时值的数据,并且想将小时值从日期列复制到一个新列。鉴于:

01/02/2021 07:00,54596894,0,SIEA
01/02/2021 09:00,55038801,0,SIEA
01/02/2021 06:00,55038845,0,SIEA
01/02/2021 02:00,78434342,0.004,SIEA
01/02/2021 15:00,78434429,0,SIEA
01/02/2021 17:00,78434838,0.005,SIEA
01/02/2021 05:00,78508079,2.715,SIEA
01/02/2021 19:00,79083881,0,SIEA
01/02/2021 12:00,82928135,0,SIEA
01/02/2021 01:00,83889954,0,SIEA

我希望结果是:

01/02/2021 07:00,54596894,0,SIEA,07
01/02/2021 09:00,55038801,0,SIEA,09
01/02/2021 06:00,55038845,0,SIEA,06
01/02/2021 02:00,78434342,0.004,SIEA,02
01/02/2021 15:00,78434429,0,SIEA,15
01/02/2021 17:00,78434838,0.005,SIEA,17
01/02/2021 05:00,78508079,2.715,SIEA,05
01/02/2021 19:00,79083881,0,SIEA,19
01/02/2021 12:00,82928135,0,SIEA,12
01/02/2021 01:00,83889954,0,SIEA,01

我一直在使用 awk,但只能得到它来给我专栏的第一部分。我需要得到空格后面的内容,空格后面只有两个字符。 复制字符串结尾并粘贴到新列

awk '{n=split($1,a,""); 打印 $0","a[n]}'

生产

01/02/2021 07:00,54596894,0,SIEA,01/02/2021
01/02/2021 09:00,55038801,0,SIEA,01/02/2021
...

如果我得到空格后的所有字符(尽管我更喜欢只得到两个直接字符),我没问题,但我似乎无法弄清楚如何让它选择分割的另一侧。

标签: awk

解决方案


不需要split。将字段分隔符设置为:or (空格),将输出字段分隔符设置为,。然后打印整个记录和第二个字段。

awk -F '[: ]' -v OFS=, '{print $0,$2}'

推荐阅读