to post messages and comments.

@naked-child:

Хорошая шпаргалка по sed: ant0.ru

@Strephil:

Новая версия GNU Sed: скопировали туда DFA из grep.
А почему этот DFA сразу в glibc не засунуть, если он быстрый?

@L29Ah:
sed ?

Есть такой вот текстик: bpaste.net
Нужно для всех строк, которые начинаются с '! ', выдернуть хуйню которая после восклицательного знака идёт, в том и только том случае, когда в соответствующем параграфе упоминается подстрока '/[0-9][0-9.]*='. Чот не пойму, как это сделать на sed, поскольку принятие решения о N зависит от следующей строки. М? // не работает: sed -ne '/^! {N;N;:b; /{N;b b};p}'

@Balancer:

Глупый вопрос. Как через sed заменить подстроку в файле без использования любых регулярных выражений, т.е. тупо строку на строку? Или как через replace заменить подстроку в файле с игнорированием регистра. Есть идеи или придётся городить велосипед на perl?

@Strephil:

Сегодня выходит OpenBSD 5.8
Среди изменений:
sed (1) -i optopn added
Ещё немного, и этим действительно можно будет пользоваться.

@Strephil:

Уиии! Я годен к программированию!
Нарколог и психиатр поставила печать, что годен, а на поиск наибольшего общего делителя на sed смотреть даже не стала.

@Strephil:

Почему стоки нумеруются с первой, а не нулевой?
Не программисты что ли?

@Strephil:

НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА НЕЛЬЗЯ ПОЛЬЗОВАТЬСЯ ГНУТЫМИ РАСШИРЕНИЯМИ!!!1111

$sed -i "s/t/u/" test изменяет test, даже если запись в него запрещена.

Действительно, они же не в файл ведут запись. Они создают новый файл,
пишут в него, потом старый файл стирают, а новый переименовывают.
Казалось бы, причём тут Путин? А притом, что "Никаких русских войск
на территории Украины нет!"

@Strephil:

Меня спросили, есть ли в bash битовые операции с числами, &, | и т.п.
Я ответил, что нет, конечно, но это всё очень легко можно сделать на sed.

$ echo $((255 & 0xf0))
240

Хм :-(

@4DA:

Вот тут у меня бомбануло от наркоманского седовсокого синтаксиса.
Чем конкретно этот пример лучше, что говноскрипт на питушоне(или любом другом языке) такого же размера?

stackoverflow.com
```
sed -n ' # turn off default printing
dog{ # if the line matches "dog"
h # put it in hold space
:a # label "a" — the top of a loop
n # fetch the next line
something{ # if it matches "something"
p # print it
x # swap hold and pattern space
bb # branch out of the loop to label "b"
} # done with "something"
# if we're here, the line doesn't match "something"
H # append pattern space to hold space
x # swap hold and pattern space
s/\([^\n]\)\n\([^\n]\)$/\2\n\1/ # see below
x # swap hold and pattern space
ba # branch to the top of the loop to label "a"
} # done with "dog"
:b # label "b" — outside the loop
# print lines that don't match and are outside the pair
p # also prints what had been accumulating in hold space
' inputfile
```

@Strephil:

Интерпретатор lisp, написанный на sed.
Зависть, зависть…
github.com

@qnikst:

в файле строку вида:

package-db: prefix.cabal-sandbox/postfix

нужно превратить в:

package-db: prefix.cabal-sandbox/postfix:/prefix/.cabal-sandbox-shared/postfix

как наиболее просто?

@ng358ex-2:

Есть строчка вида \path\to\file01 Вопрос — как с помощью первотэга\второтэга\whatever забить файл такими же строчками, идущими по порядку до заданного значения?

@dober:

sed -i '/signature = MD5/a \ \ \ \ \ \ compression = GZIP' file.config

@dober:

атятя
sed -i '/File Retention = 50 days/c\ File Retention = 30 days' bacula-*

@Self-Perfection:
sed

Слушайте, а sed коварен! Вот хочу я в скрипте добавлять в /etc/hosts строку "127.0.1.1 myhost.fqdn", при этом удаляя уже имеющиеся там строки с подстрокой myhost.fqdn. Пробую:
sed -i -e '/myhost.fqdn/d' -e "$ a 127.0.1.1 myhost.fqdn" /etc/hosts
На первый взгляд оно работает, но потом оказывается, что если в /etc/hosts уже есть myhost.fqdn последней строкой, то после этого однострочника последняя строка пропадает, а новая не дописывается. Решение — поменять местами действия:
sed -i -e "$ a 127.0.1.1 myhost.fqdn" -e '/myhost.fqdn/d' /etc/hosts

@Strephil:

Осознал, что я совсем неправильно понимал, как работает sed. :-(
Я идиот.

@wasd:

KERNELTABLE="`ip r | sed -rn '/^((([0-9]{1,3}\.?){4}|default)(\/[0-9]+)? via ([0-9]{1,3}\.?){4} dev [a-z0-9]+)/p' | sort`"; SYSCONFIG="`cat /etc/sysconfig/network/*route* | sed -rn '/^((([0-9]{1,3}\.?){4}|default))/{s/ / via /;s/ - / dev /;s/$/ /;p}' | sort`"; if [[ x$KERNELTABLE == x$SYSCONFIG ]]; then echo 0; else echo 1; fi

осталось придумать, как sort вкостылить в sed >_<

@Strephil:

$ echo 'глядите на него' | grep '\<гляд'
$ echo 'глядите на него' | sed -n '/\<гляд/p'
глядите на него
$ echo 'hello world' | grep '\<world'
hello world

@pupoque:

for f in *dll; do ln -s $f $(echo $f | sed -e s/dll/DLL/) ; done

@Strephil:

Я только сейчас почему-то догадался до такого использования:
$ echo hello > world
$ echo 's/$/!/' | sed -f — world

какой я глупенький.

@Strephil:

$ echo -e 'a\r' | sed 's/$/"/'
"

Arch Linux,
glibc 2.16.0-4
sed 4.2.1-4

@Strephil:

Вот, забавы ради написал на sed, точнее, на GNU sed: pastebin.com <pastebin.com>
У меня работает.

@Oksion:

господа линуксоиды, у вас есть шанс реально доказать превосходство линукса над остальными недооперационками, помогите пожалуйста как-то распарсить html файл. Суть в том что нужно найти в нём текст по шаблону <set value='значение' name='дата' /> и сделать из этого csv вида "значение, дата"

@Strephil:

Интересно, во сколько раз чаще я запускаю sed, чем думаю о том, что у меня нет и никогда не будет тян?

@Strephil:

А вот нельзя ли как-нибудь подобным образом вывести единичку:

echo 31 | sed 's/../\x&/'

так не работает. может быть, есть и другой способ?

@don-Rumata:

rsync example.com::module/ | sed -e 's/^.\{43\}//' для протокола рсинк (К.О.) равносилен curl --list-only для ftp. Т.е. выдаёт чистый список файлов без мусора.
sort --version-sort и --no-motd добавлять по вкусу.

@xGreen:

Преобразование окончания строк из формата DOS (CR/LF) в формат Unix (LF): sed 's/.$//' old.file > new.file

@don-Rumata:

sed "s/[/]/\\\\"/g
Заменить слеш на бэкслеш.
4 бэкслеша - потому что экранируем "\\". Как в echo -e \\.

@Irregular:

Нерадивые фансабберы отходят от спецификаций и пишут \alpha(FF) вместо \alpha&HFF&. В такие моменты во мне просыпается красноглазый любитель sed и лепит однострочники вроде этого:
ls -1 *.mkv | sed -r 's|(.*)mkv|mkvextract tracks "\0" 3:"\1ass"\nsed -i -r "s/[\\]alpha\\(([^)]*)\\)/\\\\alpha\\\&H\\1\\\&/g" "\1ass"|' | sh

@anton0xf:

как сделать вот такое?:
sed -i '0r file1' file2
и почему так оно не работает?
(кажется, что где-то это уже обсуждали, но не могу вспомнить)

@don-Rumata:

sed -e '/^#/d' filename.ext > modifiedfilename.ext

Удаляет строки начинающиеся с #.
http://forum.ixbt.com/topic.cgi?id=76:7820

@helgi:

Есть задачи по редактированию текста, с которыми обычные редакторы (нет, не vi, более обычные) справляются плохо. Примеры: извлечь из файла каждую n-тую строку; собрать из двух файлов один, чередуя строки.
Первая задача решается просто:
$ sed -n '0~4p' file
Как решить вторую, я что-то не нашёл.

@ramok:
sed

GNU sed 4.2.2 will have an F command to print the current filename being processed

@ramok:

не удержался и сделал весию "прЮвета" #1444246 на sed: clear; echo | sed -e 's,.*,_\\\\||//_|/\\|,;h;:z1;g;s/\n//;:z2;s/^\(.\)\(.\)\(.*\)/'$(tput cuu1)'\1o\2 - .oO(ПрЮвет!)\n\3/;H;s/\n.*//;w /dev/tty' -e 's/.*/sleep 0.15/e;g;s/\n.*//;x;s/.*\n//;/^$/!bz2;bz1'

@wasd:

Блин, как я это буду через 2 месяца читать? T_T

@vbooh:

В sed'е, во всяком случае gnu'том, символы группировки '()' и символ ИЛИ '|' необходимо экранировать, чтобы они работали как соответствующие спецсимволы.

@vbooh:

Короткая инструкция с пояснениями для поиска многострочных шаблонов sed'ом:
main.rtfiber.com.tw

@anton0xf:

а sed'ом чтоли никак не отрезать конец файла по заданному регэкспу-разделителю?

@Gem:

Полезные одно-строчные скрипты sed (sed shell) opennet.ru
Вопрос знатокам sed — замена символов с файле opennet.ru