Скопировать пару строк из файла в другой

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

SergMarkov15
Сообщения: 117

Скопировать пару строк из файла в другой

Сообщение SergMarkov15 »

Надо скопировать пару строк из одного файла (.INSTALL) в любом пакете арча в другой (doinst.sh) в слаке. Конкректно в .INSTALL есть что то типа
.post_install(){
update-desktop-database -q
}
Надо вытащить только update-desktop-database -q и вставить это в doinst.sh. Вопрос как sed это сделать ?
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Скопировать пару строк из файла в другой

Сообщение SLEDopit »

Вставить нужно в определённое место или в конец прикрепить?
Если в конец, то sed не нужен.

Код: Выделить всё

grep update-desktop-database /path/to/.INSTALL >> /path/to/doinst.sh

решит проблему.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
SergMarkov15
Сообщения: 117

Re: Скопировать пару строк из файла в другой

Сообщение SergMarkov15 »

SLEDopit писал(а):
05.12.2012 12:10
Вставить нужно в определённое место или в конец прикрепить?
Если в конец, то sed не нужен.

Код: Выделить всё

grep update-desktop-database /path/to/.INSTALL >> /path/to/doinst.sh

решит проблему.

Это не совсем то, между post_install(){ и } могут быть любые строки и не одна
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Скопировать пару строк из файла в другой

Сообщение SLEDopit »

SergMarkov15 писал(а):
05.12.2012 12:38
Это не совсем то, между post_install(){ и } могут быть любые строки и не одна
ну так бы сразу и объяснили.

Код: Выделить всё

sed  -n '/.post_install(){/,/}/{/}\|^.post_install(){/d;p}' /path/to/.INSTALL >> /path/to/doinst.sh

либо чуть короче, но в два захода:

Код: Выделить всё

sed  -n '/.post_install(){/,/}/p' /path/to/.INSTALL | sed '1d;$d' >> /path/to/doinst.sh
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
SergMarkov15
Сообщения: 117

Re: Скопировать пару строк из файла в другой

Сообщение SergMarkov15 »

SLEDopit писал(а):
05.12.2012 14:03
SergMarkov15 писал(а):
05.12.2012 12:38
Это не совсем то, между post_install(){ и } могут быть любые строки и не одна
ну так бы сразу и объяснили.

Код: Выделить всё

sed  -n '/.post_install(){/,/}/{/}\|^.post_install(){/d;p}' /path/to/.INSTALL >> /path/to/doinst.sh

либо чуть короче, но в два захода:

Код: Выделить всё

sed  -n '/.post_install(){/,/}/p' /path/to/.INSTALL | sed '1d;$d' >> /path/to/doinst.sh



мм, что то получается пустой doinst.sh Если что то bash
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Скопировать пару строк из файла в другой

Сообщение SLEDopit »

SergMarkov15 писал(а):
05.12.2012 15:33
мм, что то получается пустой doinst.sh Если что то bash
как запускаете?
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
SergMarkov15
Сообщения: 117

Re: Скопировать пару строк из файла в другой

Сообщение SergMarkov15 »

SLEDopit писал(а):
05.12.2012 15:52
как запускаете?

Да как , обыкновенно, в терминале в той же папке, убрав /path к ней
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Скопировать пару строк из файла в другой

Сообщение SLEDopit »

Код: Выделить всё

 $ cat 1
jskal
.post_install(){
update-desktop-database -q
jdksl
}
dkls;

 $ cat 2
test
test

 $ sed  -n '/.post_install(){/,/}/p' 1 | sed '1d;$d' >> 2

 $ cat 2
test
test
update-desktop-database -q
jdksl
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали: