sed为什么返回的字符数超过要求

ramfree17

在脚本的一部分中,我试图生成文件提交的年月列表。由于文件包含时间戳,因此我应该能够将文件名剪切到月份位置,然后执行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个字符吗?

谢谢。

帕卡德CPW

service-parent-201811201048碰巧必须201048匹配201...

可以尝试ls -1 service*json | sed -e "s|\(.*-201...\).*json$|\1|g" | sort |uniq索要破折号-之前201...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果字符数超过253,为什么TEXT函数不返回任何结果?

fscanf read()s超过我要求的字符数

为什么仍然需要传递* this,为什么要求返回它?

如果y超过64,为什么pow函数返回0?

错误 1242:子查询返回超过 1 行 - 为什么?

为什么sed还要执行我要求的更多内容?

为什么 sed 不替换特殊字符 <

为什么sed删除示例中的字符?

为什么在使用 calloc() 初始化指针时,gets() 读取的字符数超过了我设置的限制?

如果字符数超过43679,则XML Value方法返回空

为什么我要求返回数组这次采访任务?

为什么要求ssl认证的请求返回html?

为什么要求C ++迭代器返回引用?

为什么我的程序返回相同的字符?

为什么cSplit返回TRUE而不是字符

为什么++ [[]] [+ []] + [+ []]返回字符串“ 10”?

为什么字符指针“ ==“返回true?

为什么NodeJS请求返回奇怪的字符?

为什么这继续要求字符串?

如果用户输入的字符数超过16个字符,为什么我的C程序会两次打印消息?

为什么超过255的返回码在C ++中返回不同的数字?

为什么真相&&“字符串”返回“字符串”

为什么我的 for 循环返回字符而不是字符串

sed字符串不匹配。为什么?

为什么我无法使用sed删除字符?

为什么不能用sed替换特定的字符串?

sed超过100000个字符

为什么 Youtube/Google API 返回的回复不超过 5 个?

为什么会出现错误“精确提取返回的行数超过请求的行数”?