我想插入文字
#include < abc/malloc.h>
在所有之后的#include
行,就在最后一次出现#include
之后。
答案 0 :(得分:2)
使用awk
:
awk '
FNR==NR && /^#include/ { line=NR; next }
FNR!=NR
FNR==line { print "#include <abc/malloc.h>" }
' code.c code.c
如你所见:
awk
两次阅读code.c
FNR==NR
答案 1 :(得分:1)
输入:
$ cat in.h
#include <foo.h>
#include <bar.h>
/* No more includes */
/* But more stuff */
找到最后一个#include
行:
$ l=$(grep -n '^#include' in.h | tail -1 | cut -d: -f1)
在此行后面添加一行:
$ sed "$l a#include <baz.h>" < in.h
#include <foo.h>
#include <bar.h>
#include <baz.h>
/* No more includes */
/* But more stuff */
答案 2 :(得分:1)
假设你可以在包含之间有任何东西。
awk '
BEGIN {
x = 0
}
{
if ($0 ~ /^#include/)
x = NR
b[NR]=$0
}
END {
for (i = 1; i <= x; ++i)
print b[i]
print "#include <abc/malloc.h>"
for (i = ++x; i <= NR; ++i)
print b[i]
}
' file.c
答案 3 :(得分:0)
你可以试试这个,
tac yourfile.c | sed '/#include/{ s/#include.*/#include<someheader>\n&/; :loop;n; t loop;}'| tac > updated_yourfile.c