我有一个场景,我需要更改数千个 Makefile。
我需要在 Makefile 中插入一行,它应该是第一个效果代码
(如果在文件开头找到,则忽略注释和空行)。
在下面的示例中,我需要在 Makefile 中插入一行 NEWLINE=1。
Source Makefile
---------------
# 版权信息
(此处为空行)。
# 文件主要是为了....
(这里又是空文件)
# 注意
所有:
gcc sample.c
Target Makefile
---------------
# 版权信息
(这里是空行) .
# 文件主要是为了....
(这里又是空文件)
# note
NEWLINE= 1
all:
gcc 示例.c
问问题
459 次
2 回答
0
一种方法awk
:
awk '/all:/{print "NEWLINE =1\n\n" $0;next}1' source > tmp && mv tmp source
或者
使用sed
(文件内替换):
sed -i 's/all:/NEWLINE= 1\n\n&/' source
于 2013-07-25T01:17:55.220 回答
0
touch ~/tmp
chmod 777 ~/tmp
echo sed -i \'$(grep -vnE "^$|^#" Makefile | head -1 | cut -f1 -d ":")iNEWLINE=1\' Makefile > ~ /tmp
&& ~/tmp
于 2013-07-25T22:11:40.840 回答