【发布时间】:2018-07-21 18:59:01
【问题描述】:
我想在 shellscript 中使用 sed 替换我的默认 make 目标。首先,我试图让 sed 从命令行工作。
我的 makefile 包含:
all:
gcc -Wall -o main main.c
我希望它包含:
all:
gcc -Wall -o TEST main.c
我使用的 sed 命令:
sed -i 's/(-o[ ][^ ]+)/-o TEST/g' Makefile
它似乎适用于https://regexr.com/,但是当我在 ubuntu 中运行该命令时,它不会编辑我的 Makefile。可能是什么原因?
main 也是默认的 make 目标,还是 main.c 是默认的 make 目标?一些术语我还不太明白。
【问题讨论】:
-
请在您的 POST 中提及您的预期输出。
-
见documentation for
sedregex。你需要转义+:sed -i 's/(-o[ ][^ ]\+)/-o TEST/g' Makefile。此外,您还有多余的括号:sed -i 's/-o [^ ]\+/-o TEST/g' Makefile -
你确定这不是XY-Problem?你真正想要达到什么目的?请记住,
make本身就是一个文本替换工具。