LinuxForum.Fans
Тема

Как добавить в определенные файлы строку

Автор: AlfaStriker 6 сообщений 2476 просмотров
06.10.2014 17:51 · отредактировано #395232

Есть вот такая строка:

text
#include <limits.h>

Ее надо добавить в файлы:

/IPStat-4.03.3/ipstat_collect_pcap_time_ip/main.c
/IPStat-4.03.3/ipstat_collect_squid/main.c
/IPStat-4.03.3/ipstat_collect_pppd/main.c
/IPStat-4.03.3/src/sched.c
/IPStat-4.03.3/src/server.c

Чтобы сработала команда:

make

Иначе происходит ошибка:

text
error: ‘PTHREAD_STACK_MIN’ undeclared (first use in this function)
06.10.2014 18:13 #395234

Текстовым редактором пробовали?

06.10.2014 18:15 #395235

в данном случае лучше всего добавить ручками и сделать патч. Если нет системы контроля версий, то последоввательность примерно такая:
cp -r IPStat-4.03.3{,-new}
# <редактируем файлы в IPStat-4.03.3-new>
diff -ru IPStat-4.03.3{-new,} | tee IPStat-4.03.3-fix-limits-h-include.patch

потом для наложения использовать:
patch <IPStat-4.03.3-fix-limits-h-include.patch
в зависимости от каталога ещё можно указать -pX, где X число, 1 или 0 в зависимости от того, где выполняется patch...

если умеешь и любишь vim, то можно делать аналогично вот этому: Gentoo Tips &amp; Tricks

06.10.2014 18:30 #395238
bormant написал:
Текстовым редактором пробовали?

Пробовал, просто хотел автоматизации :)

06.10.2014 18:41 #395240
text
sed -i -e '1i\
#include <limits.h>' \
/IPStat-4.03.3/ipstat_collect_pcap_time_ip/main.c \
/IPStat-4.03.3/ipstat_collect_squid/main.c \
/IPStat-4.03.3/ipstat_collect_pppd/main.c \
/IPStat-4.03.3/src/sched.c \
/IPStat-4.03.3/src/server.c
10.10.2014 13:15 #395779

мой вариант
[console]$ sed -i '1s/.*/#include <limits.h>\n&/'[/console]

Войдите или зарегистрируйтесь, чтобы ответить.