долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?

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

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

Аватара пользователя
Babusha
Сообщения: 203
ОС: Убунту
Контактная информация:

долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?

Сообщение Babusha »

Почему все так сложно? Каким мне способом удалить строку в файле, в которой есть слеш? Пишу с телефона, по этому перепечатать ошибку не могу, но ругается на ''лишние символы после комманды''
стандартными способами юникс, типа заключением в кавычки, не помогает, может еть другая, менее глупая, альтернатива?
Спасибо сказали:
Аватара пользователя
Nazyvaemykh
Сообщения: 438
Статус: Подопытный участник

Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?

Сообщение Nazyvaemykh »

sed '/\// d'
¡ Страсть к разрушению есть творческая страсть!
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5282
ОС: Gentoo

Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?

Сообщение /dev/random »

Babusha писал(а):
19.07.2010 12:05
Почему все так сложно? Каким мне способом удалить строку в файле, в которой есть слеш? Пишу с телефона, по этому перепечатать ошибку не могу, но ругается на ''лишние символы после комманды''
стандартными способами юникс, типа заключением в кавычки, не помогает, может еть другая, менее глупая, альтернатива?

Два варианта: экранировать слэш или использовать как ограничитель другой символ. Т.е. или так:
s/бла\/бла//
или так:
s:бла/бла::

upd: если используется не s, а поиск, то:
/бла\/бла/d
\:бла/бла:d
Спасибо сказали:
Аватара пользователя
Babusha
Сообщения: 203
ОС: Убунту
Контактная информация:

Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?

Сообщение Babusha »

спасибо, а если вместо имени будет переменная? В ее значение нету возможности экранировать.
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?

Сообщение watashiwa_daredeska »

Babusha писал(а):
19.07.2010 12:15
ее значение нету возможности экранировать.
Есть. Прогнать опять же sed'ом и экранировать все спецсимволы обратным слэшем. Но... Если нужно всего лишь удалять строки, может лучше fgrep -v?
Спасибо сказали:
Аватара пользователя
Babusha
Сообщения: 203
ОС: Убунту
Контактная информация:

Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?

Сообщение Babusha »

а как через fgrep -v удалить строку?
А то в хелпе там написано ''выбирать не подходящие строки''
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?

Сообщение watashiwa_daredeska »

Babusha писал(а):
19.07.2010 12:37
в хелпе там написано ''выбирать не подходящие строки''
Именно. Вам же нужны строки, которые не содержат заданную. Что там Вам надо удалить, строки с '/'? fgrep -v / file.txt
Спасибо сказали:
Аватара пользователя
Babusha
Сообщения: 203
ОС: Убунту
Контактная информация:

Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?

Сообщение Babusha »

У меня тут 2 случая. Мне нужно чтобы просто удалить строку, но сэд не мог, из за слешей,
и второй случай, мне нужно что бы везде поудалялся слеш, не трогая всю строку,
привет /мир
привет мир
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5282
ОС: Gentoo

Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?

Сообщение /dev/random »

Babusha писал(а):
19.07.2010 12:48
...мне нужно что бы везде поудалялся слеш, не трогая всю строку,
привет /мир
привет мир

sed 's:/::g'
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?

Сообщение watashiwa_daredeska »

Babusha писал(а):
19.07.2010 12:48
второй случай, мне нужно что бы везде поудалялся слеш, не трогая всю строку,
Это только sed.
Спасибо сказали:
allez
Сообщения: 2223
Статус: Не очень злой админ :-)
ОС: SuSE, CentOS, FreeBSD, Windows

Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?

Сообщение allez »

...

$ echo './script' | sed 's/\.\///' script $ echo './script' | sed 's!\./!!' script $ echo './script' | sed 's:\./::' script

Спасибо сказали:
Аватара пользователя
Babusha
Сообщения: 203
ОС: Убунту
Контактная информация:

Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?

Сообщение Babusha »

так никто и не сказал как удалить строку полностью без гемороя.
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?

Сообщение watashiwa_daredeska »

Издеваетесь? fgrep -v чем не устроил?
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?

Сообщение SLEDopit »

Babusha писал(а):
19.07.2010 13:31
так никто и не сказал как удалить строку полностью без гемороя.
sed '/\//d' 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.
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?

Сообщение t.t »

watashiwa_daredeska писал(а):
19.07.2010 12:52
Babusha писал(а):
19.07.2010 12:48
второй случай, мне нужно что бы везде поудалялся слеш, не трогая всю строку,
Это только sed.
Ну уж только…

И быстрее sed-а будет.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
Voral
Сообщения: 1205
ОС: Debian Wheezy (amd64)
Контактная информация:

Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?

Сообщение Voral »

t.t писал(а):
24.07.2010 14:46

И быстрее sed-а будет.

Чую все полезные команды в линуксе я узнаю лет через 10...... :)
То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me © ?
Спасибо сказали:
Аватара пользователя
sergius
Сообщения: 782

Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?

Сообщение sergius »

А книжку топикстартер хоть раз какую-нибудь читал? Или статью про sed и регулярные выражения?
Не понимаю вопрос "зачем все так сложно?" - а как по-вашему не сложно? ИМХО проще некуда.
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?

Сообщение t.t »

Да что там узнавать?

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

$ dpkg -L coreutils | grep bin/ | wc -l
96

Из этих команд, думаю, больше половины на каждый день не нужны, а большинство оставшихся (включая ту же tr) просты как полено.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
Voral
Сообщения: 1205
ОС: Debian Wheezy (amd64)
Контактная информация:

Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?

Сообщение Voral »

t.t писал(а):
26.07.2010 13:30
Да что там узнавать?

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

$ dpkg -L coreutils | grep bin/ | wc -l
96


У меня 102... :)
Видимо идет от разности моего восприятия: просто чтение и использование для решения конкретного вопроса :) С этим, втджимо, в соседнюю тему...
То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me © ?
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?

Сообщение t.t »

Voral писал(а):
26.07.2010 13:41
t.t писал(а):
26.07.2010 13:30
Да что там узнавать?

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

$ dpkg -L coreutils | grep bin/ | wc -l
96
У меня 102... :)
Видимо идет от разности моего восприятия: просто чтение и использование для решения конкретного вопроса :) С этим, втджимо, в соседнюю тему...
«Просто чтением» этих манов я и сам никогда не занимался. Всегда читал к конкретному вопросу. И в зависимости от степени конкретности количество манов, которые нужно даже не прочитать, а просмотреть, сводится обычно к 1-5.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
Nazyvaemykh
Сообщения: 438
Статус: Подопытный участник

Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?

Сообщение Nazyvaemykh »

В info coreutils команды сгруппированы по смыслу, так что можно найти команду, даже не зная ее точного названия.
¡ Страсть к разрушению есть творческая страсть!
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?

Сообщение watashiwa_daredeska »

t.t писал(а):
24.07.2010 14:46
watashiwa_daredeska писал(а):
19.07.2010 12:52
Babusha писал(а):
19.07.2010 12:48
второй случай, мне нужно что бы везде поудалялся слеш, не трогая всю строку,
Это только sed.
Ну уж только…

И быстрее sed-а будет.
Черт, облажался :)
Спасибо сказали:
tanatonaut
Сообщения: 3

Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?

Сообщение tanatonaut »

SLEDopit писал(а):
19.07.2010 14:39
Babusha писал(а):
19.07.2010 13:31
так никто и не сказал как удалить строку полностью без гемороя.
sed '/\//d' file


У меня переменная передаётся в sed
Единтвенное решение, которое вижу
var=asdasdsa/asdasd/asdsad
var1=`echo $var | sed 's|/|\\\\/|g'`
echo $var1
sed -i "/$var1/d" file
Но, [...], это достойно windows!


t.t писал(а):
24.07.2010 14:46
watashiwa_daredeska писал(а):
19.07.2010 12:52
Babusha писал(а):
19.07.2010 12:48
второй случай, мне нужно что бы везде поудалялся слеш, не трогая всю строку,
Это только sed.
Ну уж только…

И быстрее sed-а будет.


Не будет, мне нужна интерактивная замена.


sergius писал(а):
26.07.2010 13:28
А книжку топикстартер хоть раз какую-нибудь читал? Или статью про sed и регулярные выражения?
Не понимаю вопрос "зачем все так сложно?" - а как по-вашему не сложно? ИМХО проще некуда.


Ну даааа, оставить только один разделитель для команды d - куда уж проще.
Спасибо сказали:
allez
Сообщения: 2223
Статус: Не очень злой админ :-)
ОС: SuSE, CentOS, FreeBSD, Windows

Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?

Сообщение allez »

Хороший ник - tanatonaut, звучит не так грубо, как "некрофил" или там "труположец". :)

tanatonaut писал(а):
26.12.2014 10:03
У меня переменная передаётся в sed
Единтвенное решение, которое вижу
var=asdasdsa/asdasd/asdsad
var1=`echo $var | sed 's|/|\\\\/|g'`
echo $var1
sed -i "/$var1/d" file

Хм, и чего же вы хотите этим ужасом добиться? Зачем вам превращать строку "asdasdsa/asdasd/asdsad" в "asdasdsa\/asdasd\/asdsad" именно таким образом? Попробуйте так:

И без алгебры можно... :)

$ cat file.txt asdasdsa/asdasd/asdsad m,sndnsm, asdasdsa/asdasd/asdsad gfhgj m,sndnsm, asdasdsa/asdasd/asdsad $ var="asdasdsa/asdasd/asdsad"; sed "/${var//\//\\/}/d" file.txt m,sndnsm, gfhgj m,sndnsm,


tanatonaut писал(а):
26.12.2014 10:03
Не будет, мне нужна интерактивная замена.

В этом случае воспользуйтесь обычным текстовым редактором. Утилиты типа sed и tr предназначены для неинтерактивной обработки текста.

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

Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?

Сообщение SLEDopit »

ну вы и откопали топик.
tanatonaut писал(а):
26.12.2014 10:03
У меня переменная передаётся в sed
Единтвенное решение, которое вижу
var=asdasdsa/asdasd/asdsad
var1=`echo $var | sed 's|/|\\\\/|g'`
echo $var1
sed -i "/$var1/d" file
вы топик не пробовали прочитать?
/dev/random писал(а):
19.07.2010 12:09
upd: если используется не s, а поиск, то:
/бла\/бла/d
\:бла/бла:d
и всё отлично работает без замен.

если всё же хочется именно с заменами, то стоит почитать про bash substitution и сделать так:

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

sed -i "/${var//\//\\\/}/d" 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.
Спасибо сказали:
allez
Сообщения: 2223
Статус: Не очень злой админ :-)
ОС: SuSE, CentOS, FreeBSD, Windows

Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?

Сообщение allez »

SLEDopit писал(а):
26.12.2014 11:49
если всё же хочется именно с заменами, то стоит почитать про bash substitution и сделать так:

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

sed -i "/${var//\//\\\/}/d" file

Ой, меня опередили. Прошу меня плагиатором не считать. :)
Спасибо сказали:
tanatonaut
Сообщения: 3

Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?

Сообщение tanatonaut »

allez писал(а):
26.12.2014 11:41
Хороший ник - tanatonaut, звучит не так грубо, как "некрофил" или там "труположец". :)


Боюсь поинтересоваться, как, по Вашему, переводится "astronaut"...

Спасибо сказали:
Аватара пользователя
jashaw5
Сообщения: 68

Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?

Сообщение jashaw5 »

tanatonaut писал(а):
27.12.2014 09:38
allez писал(а):
26.12.2014 11:41
Хороший ник - tanatonaut, звучит не так грубо, как "некрофил" или там "труположец". :)

Боюсь поинтересоваться, как, по Вашему, переводится "astronaut"...

"-навт-
-навт-
суффикс
Словообразовательная единица, образующая имена существительные - названия лиц от иноязычных по происхождению основ (аквана́вт, аэрона́вт, гидрона́вт, космона́вт, океана́вт, стратона́вт и т.п.)."(с)Современный толковый словарь русского языка Ефремовой.
Получается tanatonaut - смертник. Профессия такая?
Русский форум. Задаёшь вопрос, потом тебе долго рассказывают, какой ты м-к.
Спасибо сказали:
Ответить