在脚本的一部分中,我试图生成文件提交的年月列表。由于文件包含时间戳,因此我应该能够将文件名剪切到月份位置,然后执行sort + uniq过滤。但是sed为其中一个文件生成异常值。
我正在使用此命令序列
ls -1 service*json | sed -e "s|\(.*201...\).*json$|\1|g" | sort |uniq
这在大多数时间都有效,除了在某些情况下会输出整个时间戳:
$ ls
service-parent-20181119092630.json service-parent-20181123134132.json service-parent-20181202124532.json service-parent-20190121091830.json service-parent-20190125124209.json
service-parent-20181119101003.json service-parent-20181126104300.json service-parent-20181211095939.json service-parent-20190121092453.json service-parent-20190128163539.json
service-parent-20181120095850.json service-parent-20181127083441.json service-parent-20190107035508.json service-parent-20190122093608.json
service-parent-20181120104838.json service-parent-20181129155835.json service-parent-20190107042234.json service-parent-20190122115053.json
$ ls -1 service*json | sed -e "s|\(.*201...\).*json$|\1|g" | sort |uniq
service-parent-201811
service-parent-201811201048
service-parent-201812
service-parent-201901
我也尝试了这种变化,但是第二条输出行仍然返回:
ls -1 service*json | sed -e "s|\(.*201.\{3\}\).*json$|\1|g" | sort |uniq
有人可以解释为什么service-parent-201811201048返回超过要求的3个字符吗?
谢谢。
service-parent-201811201048
碰巧必须201048
匹配201...
。
可以尝试ls -1 service*json | sed -e "s|\(.*-201...\).*json$|\1|g" | sort |uniq
索要破折号-
之前201...
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句