Поиск строки в файле и её удаление.

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

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

fergios
Сообщения: 512
ОС: debian stable

Поиск строки в файле и её удаление.

Сообщение fergios »

файл :
строка1
строка2
строка3

Как найти "строка2", удалить её и получить следующее содержимое :
строка1
строка3


?
Спасибо сказали:
Аватара пользователя
Nazyvaemykh
Сообщения: 438
Статус: Подопытный участник

Re: Поиск строки в файле и её удаление.

Сообщение Nazyvaemykh »

sed -i '/строка2/d'
¡ Страсть к разрушению есть творческая страсть!
Спасибо сказали:
Аватара пользователя
polovinamozga
Сообщения: 99
ОС: gentoo

Re: Поиск строки в файле и её удаление.

Сообщение polovinamozga »

cat file | grep -v "строка2" >> file1

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

Re: Поиск строки в файле и её удаление.

Сообщение SLEDopit »

polovinamozga писал(а):
06.08.2010 17:34
cat file grep -v "строка2" >> file1
вы пайп забыли перед grep. да и никогда не понимал в чем магический смысл конструкции cat file | grep something, когда есть grep something file (:
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.
Спасибо сказали:
Аватара пользователя
Nazyvaemykh
Сообщения: 438
Статус: Подопытный участник

Re: Поиск строки в файле и её удаление.

Сообщение Nazyvaemykh »

«Магический смысл», кстати, уже обсуждался на этом форуме.

представим, например, что подряд выполняются несколько команд с одним файлов, но разными шаблонами. В таком случае cat file | grep pattern удобнее.

Или, например, выполняется длинный конвейер. Если он начинается с cat, сразу понятно, что за данные он обрабатывает, не надо парсить строку, отыскивать, где это в опциях grep указан файл.

Суммирую, такая запись позволяет отделить фильтр от данных, которые в этот фильтр передаются.
¡ Страсть к разрушению есть творческая страсть!
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Поиск строки в файле и её удаление.

Сообщение drBatty »

SLEDopit писал(а):
06.08.2010 18:15
да и никогда не понимал в чем магический смысл конструкции cat file | grep something, когда есть grep something file (:

с этим более-менее ясно, но ИМХО sed -i удобнее (кстати, она ещё и бекап может сделать - sed -i*.bak)
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
denel
Сообщения: 497
ОС: Gentoo Linux

Re: Поиск строки в файле и её удаление.

Сообщение denel »

drBatty писал(а):
08.08.2010 13:08
SLEDopit писал(а):
06.08.2010 18:15
да и никогда не понимал в чем магический смысл конструкции cat file | grep something, когда есть grep something file (:

с этим более-менее ясно, но ИМХО sed -i удобнее (кстати, она ещё и бекап может сделать - sed -i*.bak)

а можно еще по номеру строку удалить

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

sed 'NUMBER d'

удалить из файла

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

sed -i 'NUMBER d'
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Поиск строки в файле и её удаление.

Сообщение drBatty »

denel писал(а):
25.08.2010 11:25
а можно еще по номеру строку удалить

а ещё можно так:
sed '7~13d'
и так:
sed '0,/xyz/'
только причём тут это? (:
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали: