долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?
Модераторы: /dev/random, Модераторы разделов
долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?
Почему все так сложно? Каким мне способом удалить строку в файле, в которой есть слеш? Пишу с телефона, по этому перепечатать ошибку не могу, но ругается на ''лишние символы после комманды''
стандартными способами юникс, типа заключением в кавычки, не помогает, может еть другая, менее глупая, альтернатива?
стандартными способами юникс, типа заключением в кавычки, не помогает, может еть другая, менее глупая, альтернатива?
- Nazyvaemykh
- Сообщения: 438
- Статус: Подопытный участник
Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?
sed '/\// d'
¡ Страсть к разрушению есть творческая страсть!
- /dev/random
- Администратор
- Сообщения: 5289
- ОС: Gentoo
Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?
Babusha писал(а): ↑19.07.2010 12:05Почему все так сложно? Каким мне способом удалить строку в файле, в которой есть слеш? Пишу с телефона, по этому перепечатать ошибку не могу, но ругается на ''лишние символы после комманды''
стандартными способами юникс, типа заключением в кавычки, не помогает, может еть другая, менее глупая, альтернатива?
Два варианта: экранировать слэш или использовать как ограничитель другой символ. Т.е. или так:
s/бла\/бла//
или так:
s:бла/бла::
upd: если используется не s, а поиск, то:
/бла\/бла/d
\:бла/бла:d
Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?
спасибо, а если вместо имени будет переменная? В ее значение нету возможности экранировать.
-
- Бывший модератор
- Сообщения: 4038
- Статус: Искусственный интеллект (pre-alpha)
- ОС: Debian GNU/Linux
Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?
Есть. Прогнать опять же sed'ом и экранировать все спецсимволы обратным слэшем. Но... Если нужно всего лишь удалять строки, может лучше fgrep -v?
Мои розовые очки
Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?
а как через fgrep -v удалить строку?
А то в хелпе там написано ''выбирать не подходящие строки''
А то в хелпе там написано ''выбирать не подходящие строки''
-
- Бывший модератор
- Сообщения: 4038
- Статус: Искусственный интеллект (pre-alpha)
- ОС: Debian GNU/Linux
Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?
Именно. Вам же нужны строки, которые не содержат заданную. Что там Вам надо удалить, строки с '/'? fgrep -v / file.txt
Мои розовые очки
Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?
У меня тут 2 случая. Мне нужно чтобы просто удалить строку, но сэд не мог, из за слешей,
и второй случай, мне нужно что бы везде поудалялся слеш, не трогая всю строку,
привет /мир
привет мир
и второй случай, мне нужно что бы везде поудалялся слеш, не трогая всю строку,
привет /мир
привет мир
- /dev/random
- Администратор
- Сообщения: 5289
- ОС: Gentoo
-
- Бывший модератор
- Сообщения: 4038
- Статус: Искусственный интеллект (pre-alpha)
- ОС: Debian GNU/Linux
Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?
а если нужно удалить './'?
Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?
...
$ echo './script' | sed 's/\.\///'
script
$ echo './script' | sed 's!\./!!'
script
$ echo './script' | sed 's:\./::'
script
Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?
так никто и не сказал как удалить строку полностью без гемороя.
-
- Бывший модератор
- Сообщения: 4038
- Статус: Искусственный интеллект (pre-alpha)
- ОС: Debian GNU/Linux
Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?
Издеваетесь? fgrep -v чем не устроил?
Мои розовые очки
Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?
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.
The more you believe you don't do mistakes, the more bugs are in your code.
Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?
всем огромнейшое спасибо!
Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?
Ну уж только…
Код: Выделить всё
tr -d /
И быстрее sed-а будет.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?
Чую все полезные команды в линуксе я узнаю лет через 10......
То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me © ?
When life puts you in tough situations, don’t say "why me". Just say "try me © ?
Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?
А книжку топикстартер хоть раз какую-нибудь читал? Или статью про sed и регулярные выражения?
Не понимаю вопрос "зачем все так сложно?" - а как по-вашему не сложно? ИМХО проще некуда.
Не понимаю вопрос "зачем все так сложно?" - а как по-вашему не сложно? ИМХО проще некуда.
Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?
Да что там узнавать?
Из этих команд, думаю, больше половины на каждый день не нужны, а большинство оставшихся (включая ту же tr) просты как полено.
Код: Выделить всё
$ dpkg -L coreutils | grep bin/ | wc -l
96
Из этих команд, думаю, больше половины на каждый день не нужны, а большинство оставшихся (включая ту же tr) просты как полено.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?
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 © ?
When life puts you in tough situations, don’t say "why me". Just say "try me © ?
Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?
«Просто чтением» этих манов я и сам никогда не занимался. Всегда читал к конкретному вопросу. И в зависимости от степени конкретности количество манов, которые нужно даже не прочитать, а просмотреть, сводится обычно к 1-5.Voral писал(а): ↑26.07.2010 13:41У меня 102...t.t писал(а): ↑26.07.2010 13:30Да что там узнавать?
Код: Выделить всё
$ dpkg -L coreutils | grep bin/ | wc -l 96
Видимо идет от разности моего восприятия: просто чтение и использование для решения конкретного вопроса С этим, втджимо, в соседнюю тему...
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
- Nazyvaemykh
- Сообщения: 438
- Статус: Подопытный участник
Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?
В info coreutils команды сгруппированы по смыслу, так что можно найти команду, даже не зная ее точного названия.
¡ Страсть к разрушению есть творческая страсть!
Спасибо сказали:
-
- Бывший модератор
- Сообщения: 4038
- Статус: Искусственный интеллект (pre-alpha)
- ОС: Debian GNU/Linux
Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?
Черт, облажался :)t.t писал(а): ↑24.07.2010 14:46Ну уж только…
Код: Выделить всё
tr -d /
И быстрее sed-а будет.
Мои розовые очки
-
- Сообщения: 3
Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?
У меня переменная передаётся в 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Ну уж только…
Код: Выделить всё
tr -d /
И быстрее sed-а будет.
Не будет, мне нужна интерактивная замена.
Ну даааа, оставить только один разделитель для команды d - куда уж проще.
Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?
Хороший ник - tanatonaut, звучит не так грубо, как "некрофил" или там "труположец". :)
Хм, и чего же вы хотите этим ужасом добиться? Зачем вам превращать строку "asdasdsa/asdasd/asdsad" в "asdasdsa\/asdasd\/asdsad" именно таким образом? Попробуйте так:
В этом случае воспользуйтесь обычным текстовым редактором. Утилиты типа sed и tr предназначены для неинтерактивной обработки текста.
P. S. Мат на данном ресурсе - не комильфо.
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,
В этом случае воспользуйтесь обычным текстовым редактором. Утилиты типа sed и tr предназначены для неинтерактивной обработки текста.
P. S. Мат на данном ресурсе - не комильфо.
Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?
ну вы и откопали топик.
если всё же хочется именно с заменами, то стоит почитать про bash substitution и сделать так:
вы топик не пробовали прочитать?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:09upd: если используется не 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.
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?
SLEDopit писал(а): ↑26.12.2014 11:49если всё же хочется именно с заменами, то стоит почитать про bash substitution и сделать так:
Код: Выделить всё
sed -i "/${var//\//\\\/}/d" file
Ой, меня опередили. Прошу меня плагиатором не считать. :)
-
- Сообщения: 3
Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?
allez писал(а): ↑26.12.2014 11:41Хороший ник - tanatonaut, звучит не так грубо, как "некрофил" или там "труположец".
Боюсь поинтересоваться, как, по Вашему, переводится "astronaut"...
Re: долбанный sed, зачем все так сложно? Как удалить строку в имени которой есть слеш?
tanatonaut писал(а): ↑27.12.2014 09:38allez писал(а): ↑26.12.2014 11:41Хороший ник - tanatonaut, звучит не так грубо, как "некрофил" или там "труположец".
Боюсь поинтересоваться, как, по Вашему, переводится "astronaut"...
"-навт-
-навт-
суффикс
Словообразовательная единица, образующая имена существительные - названия лиц от иноязычных по происхождению основ (аквана́вт, аэрона́вт, гидрона́вт, космона́вт, океана́вт, стратона́вт и т.п.)."(с)Современный толковый словарь русского языка Ефремовой.
Получается tanatonaut - смертник. Профессия такая?
Русский форум. Задаёшь вопрос, потом тебе долго рассказывают, какой ты м-к.