这里是我的Makefile和输出,如何打印[1-5,7,9-10] ?
$ ls /tmp/foo foo10.txt foo1.txt foo2.txt foo3.txt foo4.txt foo5.txt foo7.txt foo9.txt $ cat Makefile DIR1 := /tmp/foo/ COMMA :=,EMPTY := SPACE := $(EMPTY) $(EMPTY) VERSIONS := $(subst $(SPACE),$(COMMA),$(patsubst foo%,%,$(basename $(notdir $(wildcard $(DIR1)/foo*.txt))))) all: $(info versions is [${VERSIONS}]) $ make versions is [10,1,2,3,4,5,9]
每个GNU / Linux发行版都有Python吗?
Linux:阻塞,直到一个文件中匹配的string(“tail + grep with blocking”)
如何解释ldd程序的输出?
我将使用哪种GNU / Linux命令行工具来执行search和replace文件?
处理跨平台的文件path
下面是shell命令的流水线来完成你的工作:
printf '%sn' foo*[0-9].txt | sed 's/[^0-9]*//g' | sort -n | awk 'function prnt(sep){printf "%s%s",s,(p > s ? "-" p : "") sep} NR==1{s = $1} p < $1-1{prnt(","); s = $1} {p = $1} END{prnt(ORS)}' 1-5,9-10
命令是:
printf在不同的行上打印每个文件名
按数字顺序排序以获得正确的顺序
awk设置范围并格式化结果
有几种方法:
如果你知道最大的可能值:首先,添加SHELL=bash使大括号起作用。 然后使用类似$(shell {1..10}) ,并通过$(wildcard)传递结果来排除不存在的文件。
通过sort -n管道,再次在$(shell) 。
填充数字在左边0秒,然后正常排序。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。