1

我有一个场景,我需要更改数千个 Makefile。
我需要在 Makefile 中插入一行,它应该是第一个效果代码
(如果在文件开头找到,则忽略注释和空行)。

在下面的示例中,我需要在 Makefile 中插入一行 NEWLINE=1。

Source Makefile
---------------

# 版权信息
(此处为空行)。
# 文件主要是为了....
(这里又是空文件)
# 注意


所有:
gcc sample.c

Target Makefile
---------------

# 版权信息
(这里是空行) .
# 文件主要是为了....
(这里又是空文件)
# note

NEWLINE= 1

all:
gcc 示例.c
4

2 回答 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 回答