我知道下面的perl one liner很简单,有效并且做全局替换,A代表a; 但是如何在makefile中运行它?
perl -pi -e "s/a/A/g" filename
Run Code Online (Sandbox Code Playgroud)
我试过(我现在认为帖子的其余部分是垃圾,因为shell命令执行命令行扩展 - 不是我想要的!)上面的问题仍然存在!
APP = $(shell perl -pi -e "s/a/A/g" filename)
Run Code Online (Sandbox Code Playgroud)
有和没有以下行
EXE = $(APP)
Run Code Online (Sandbox Code Playgroud)
我总是得到以下错误
make: APP: Command not found
Run Code Online (Sandbox Code Playgroud)
我假设它来自启动APP的行
谢谢
如果你想运行 perl 作为目标操作的一部分,你可以使用
$ cat 生成文件
全部:
回声 abc | perl -pe 's/a/A/g'
$ 制作
回声 abc | perl -pe 's/a/A/g'
ABC
(请注意,前面有一个 TAB 字符echo。)
Perl 的-i选项是就地编辑文件,但这会造成混乱make(除非您正在编写一个虚假目标)。更典型的模式是从源头制定目标。例如:
$ cat 生成文件
全部: 巴尔
bAr: bar.in
perl -pe 's/a/A/g' bar.in > bAr
$ 猫吧.in
酒吧
$ 制作
perl -pe 's/a/A/g' bar.in > bAr
$猫巴
酒吧
如果您让我们知道您想要做什么,我们将能够为您提供更好、更有帮助的答案。
| 归档时间: |
|
| 查看次数: |
3956 次 |
| 最近记录: |