Unix 生成排序内置函数

Unix 生成排序内置函数,unix,compiler-construction,makefile,Unix,Compiler Construction,Makefile,我想从makefile中对txt文件中的行进行排序。我发现这个排序函数是一个make函数(内置函数) 我的想法是: $(UNSORT) = $(cat input.txt) $(SORTED) = $(sort $(UNSORT)) @echo $(SORTED) >output.txt 。。但这项工作并非如此 有人能帮忙吗?这样调用sort命令就行了 sort text.txt > output.txt 赋值期间,不应将变量名用$()括起来。因此,前两个赋值语句的形式应为VAR

我想从makefile中对txt文件中的行进行排序。我发现这个排序函数是一个make函数(内置函数)

我的想法是:

$(UNSORT) = $(cat input.txt)
$(SORTED) = $(sort $(UNSORT))
@echo $(SORTED) >output.txt
。。但这项工作并非如此


有人能帮忙吗?

这样调用sort命令就行了

sort text.txt > output.txt

赋值期间,不应将变量名用
$()
括起来。因此,前两个赋值语句的形式应为
VARIABLE=some_value

第二个问题是调用
cat
。要运行任何shell命令,必须使用make的内置函数
$(shell…
)。简单的
$(cat…
不行

有了这些更正,脚本运行正常:

UNSORT = $(shell cat input.txt)
SORTED = $(sort $(UNSORT))

all:
    @echo $(SORTED) > output.txt

这是一个内置的功能?这不会删除重复的单词…这是make教程中的一个示例:$(sort foo bar lose)这很好。不,sort是一个标准的命令行程序。如果您还需要删除重复项,您可以使用“cat input.txt | sort | uniq>output.txt”,我可能只使用这个make内置函数。Alexeys:注意,
sort
程序逐行排序。make
$(sort…
函数逐字排序。所以(取决于input.txt文件的格式)它们可能根本不一样。空白呢?
UNSORT = $(shell cat input.txt)
SORTED = $(sort $(UNSORT))

all:
    @echo $(SORTED) > output.txt