我有一个'|'文件分隔。文件中的一个字段是时间戳。该字段的格式如下:MM-dd-yyyy HH:mm:ss
我希望能够打印到文件的唯一日期。我可以使用剪切命令(cut -f1 -d'|' _file_name_ |sort|uniq
)来提取唯一日期。然而,随着该领域的时间部分,我看到了数百个结果。运行cut命令后,我想取前11个字符的子字符串来显示唯一的日期。我尝试使用awk命令,例如:
awk ' { print substr($1,1-11) }' | cut -f1 -d'|' _file_name_ |sort|uniq > _output_file_
我没有运气。我是以错误的方式来做这件事的吗?有没有更简单的方法来提取我需要的数据。任何帮助将不胜感激。
答案 0 :(得分:4)
如果日期是文件中的第一个(空格分隔)字段,那么唯一日期列表就是:
cut -f1 -d' ' filename | sort -u
更新:除了@ shellter的正确答案之外,我还将提供另一种演示其他awk设施的方法:
awk '{split($10, a); date[a[1]]++} END {for (d in date) print d}' filename
答案 1 :(得分:3)
cut -c1-11
将显示每个输入行的字符1-11。
答案 2 :(得分:2)
你们都在那里。这是基于日期时间戳位于字段1中的想法。
编辑:将字段更改为10,也使用-u选项进行排序,而不是使用uniq
进行sep进程你不需要削减,awk会为你做那件事。
awk -F"|" ' { print substr($10,1,11) }' _file_name_ |sort -u > _output_file_
我希望这会有所帮助。
P.S。因为您似乎是新用户,如果您得到的答案可以帮助您,请记住将其标记为已接受,或者给它一个+(或 - )作为有用的答案