LINUX.ORG.RU

Необходимо найти подстроку в файле, и заменит целую строку, на другую, подскажите как это сделать?

ENRIX
() автор топика

Если я правильно понял что тебе нужно:

sed -i "s/^foo.*/boo/" filename.ext

Deleted
()
Ответ на: комментарий от ENRIX

А как еще вставить строку boo, после строки foo ?

ENRIX
() автор топика
Ответ на: комментарий от ENRIX

sed - одна из вкусностей юникс систем, позволяющаяя переписать историю одной
 командой. Например

for i in <где-то-там>
do
sed -i $i 's/Ленинн/Сталин/'
done

marsijanin ★★
()
Ответ на: комментарий от marsijanin

ПОнятно, а можно как-то вставить одну строку boo, после foo строки. ? Вставить после(тоесть не затерев след строку, а сдвинув все вниз)

ENRIX
() автор топика
Ответ на: комментарий от marsijanin

man sed
       a \

       text   Append text, which has each embedded newline preceded by a backslash.

       i \

       text   Insert text, which has each embedded newline preceded by a backslash.

sdio ★★★★★
()
Ответ на: комментарий от marsijanin

marsijanin

Ваша комманда работает, но не до конца(т.к. вставляет после моего foo, а не на новой строке(мне надо, чтобы как-бы между строк вставляло, но первой строкой было foo(начало).

Юзаю так:

sed -i "s/^AC_INIT.*$/&AM_INIT_AUTOMAKE([dist-bzip2])/" configure.ac

т.е. как сделать, чтобы AM_INIT_AUTOMAKE не сразу, после AC_INIT_*** вствлялся, а спереди еще перенос на новую строку был

ENRIX
() автор топика
Ответ на: комментарий от ENRIX

Просто я пишу скрипт, который должен упростить для меня, вызов комманд из autotools, для генерации скриптов проверки configure и генерации Makefile'ов:

Выглядит, это все так:

#!/bin/sh

PROG=TestProg

# Minimum value required to build AUTOMAKE_MIN=1.10.0 AUTOCONF_MIN=2.61

AUTOMAKE_DIR="/usr/share/automake-1.10"

#Build Makefile.am echo "SUBDIRS = src " > Makefile.am #Build src/Makefile.am echo "bin_PROGRAMS = TestProg TestProg_SOURCES = func.c testprog.c INCLUDES = -I../include " > src/Makefile.am

autoscan mv configure.scan configure.ac autoheader cp -a $AUTOMAKE_DIR/install-sh . cp -a $AUTOMAKE_DIR/mkinstalldirs . cp -a $AUTOMAKE_DIR/missing . touch NEWS README AUTHORS ChangeLog cp -a $AUTOMAKE_DIR/INSTALL . cp -a $AUTOMAKE_DIR/COPYING . #Надо изменить configure.ac" #Меняем AC_CONFIG_HEADER на AM_CONFIG_HEADER sed -i "s/AC_CONFIG_HEADER/AM_CONFIG_HEADER/" configure.ac sed -i "s/^AC_INIT.*$/&AM_INIT_AUTOMAKE([dist-bzip2])/" configure.ac ######## aclocal automake --add-missing autoconf

ENRIX
() автор топика
Ответ на: комментарий от ENRIX

Ссори, за отсутствие форматирования, вот:

#!/bin/sh

PROG=TestProg

# Minimum value required to build
AUTOMAKE_MIN=1.10.0
AUTOCONF_MIN=2.61

AUTOMAKE_DIR="/usr/share/automake-1.10"

#Build Makefile.am
echo 
"SUBDIRS = src
" > Makefile.am
#Build src/Makefile.am
echo 
"bin_PROGRAMS = TestProg
TestProg_SOURCES = func.c testprog.c
INCLUDES = -I../include
" > src/Makefile.am

autoscan
mv configure.scan configure.ac
autoheader
cp -a $AUTOMAKE_DIR/install-sh .
cp -a $AUTOMAKE_DIR/mkinstalldirs .
cp -a $AUTOMAKE_DIR/missing .
touch NEWS README AUTHORS ChangeLog
cp -a $AUTOMAKE_DIR/INSTALL .
cp -a $AUTOMAKE_DIR/COPYING .
#Надо изменить configure.ac"
#Меняем AC_CONFIG_HEADER на AM_CONFIG_HEADER
sed -i "s/AC_CONFIG_HEADER/AM_CONFIG_HEADER/" configure.ac 
sed -i "s/^AC_INIT.*$/&AM_INIT_AUTOMAKE([dist-bzip2])/" configure.ac
########
aclocal
automake --add-missing
autoconf

ENRIX
() автор топика
Ответ на: комментарий от sdio

marsijanin

Ок, спс за ответ, все работает... кстати, тут есть люди, которые пользуются Autotools для компиляции программ ?

ENRIX
() автор топика
Ответ на: комментарий от anonymous

> Не используйте auto-hell для новых программ.

Ну как дети -- услышат какую-то чушь, и тут же ее повторяют.

Dselect ★★★
()
Ответ на: комментарий от ENRIX

про auto* tools

Большую часть этого скрипта можно заменить на

autoreconf -iv

Dselect ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.