Strephil
sed Есть задача: поменять местами две соседние строчки. И у меня не получилось простого решения на sed.
Есть решение с регуляркой, вот меняются местами 2 и 3 строчки:
seq 1 3 | sed '/2/{N;s/\(.\)\n\(.\)/\2\n\1/}'
но мне кажется, что регулярка тут лишнее и недостаточно изящное. мне бы хотелось решить это через hold space.

seq 1 3 | sed '/2/{x;n;G}'
получается лишняя пустая строка.

seq 1 3 | sed '/2/{h;n;G}'
строка два повторяется два раза.
L29Ah
? sed Есть такой вот текстик: bpaste.net
Нужно для всех строк, которые начинаются с '! ', выдернуть хуйню которая после восклицательного знака идёт, в том и только том случае, когда в соответствующем параграфе упоминается подстрока '/[0-9][0-9.]*='. Чот не пойму, как это сделать на sed, поскольку принятие решения о N зависит от следующей строки. М? // не работает: sed -ne '/^! {N;N;:b; /{N;b b};p}'
Balancer
Bash sed replace Глупый вопрос. Как через sed заменить подстроку в файле без использования любых регулярных выражений, т.е. тупо строку на строку? Или как через replace заменить подстроку в файле с игнорированием регистра. Есть идеи или придётся городить велосипед на perl?
Strephil
быдлокод вещества sed Уиии! Я годен к программированию!
Нарколог и психиатр поставила печать, что годен, а на поиск наибольшего общего делителя на sed смотреть даже не стала.
Strephil
GNU sed НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА
НИКОГДА НЕЛЬЗЯ ПОЛЬЗОВАТЬСЯ ГНУТЫМИ РАСШИРЕНИЯМИ!!!1111

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

Действительно, они же не в файл ведут запись. Они создают новый файл,
пишут в него, потом старый файл стирают, а новый переименовывают.
Казалось бы, причём тут Путин? А притом, что "Никаких русских войск
на территории Украины нет!"
Strephil
Bash sed Меня спросили, есть ли в bash битовые операции с числами, &, | и т.п.
Я ответил, что нет, конечно, но это всё очень легко можно сделать на sed.

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

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

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
```
qnikst
Bash sed awk в файле строку вида:

package-db: prefix.cabal-sandbox/postfix

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

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

как наиболее просто?
ng358ex-2
? Vim sed notwitter Есть строчка вида \path\to\file01 Вопрос — как с помощью первотэга\второтэга\whatever забить файл такими же строчками, идущими по порядку до заданного значения?
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
wasd
code shit sed костыледрочерство
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 >_<
Oksion
Linux sed awk господа линуксоиды, у вас есть шанс реально доказать превосходство линукса над остальными недооперационками, помогите пожалуйста как-то распарсить html файл. Суть в том что нужно найти в нём текст по шаблону <set value='значение' name='дата' /> и сделать из этого csv вида "значение, дата"
Strephil
GNU sed А вот нельзя ли как-нибудь подобным образом вывести единичку:

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

так не работает. может быть, есть и другой способ?
don-Rumata
code shell sed rsync curl
rsync example.com::module/ | sed -e 's/^.\{43\}//' для протокола рсинк (К.О.) равносилен curl --list-only для ftp. Т.е. выдаёт чистый список файлов без мусора.
sort --version-sort и --no-motd добавлять по вкусу.
Irregular
code sed libass
Нерадивые фансабберы отходят от спецификаций и пишут \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
Linux shell sed как сделать вот такое?:
sed -i '0r file1' file2
и почему так оно не работает?
(кажется, что где-то это уже обсуждали, но не могу вспомнить)
helgi
sed paste Есть задачи по редактированию текста, с которыми обычные редакторы (нет, не vi, более обычные) справляются плохо. Примеры: извлечь из файла каждую n-тую строку; собрать из двух файлов один, чередуя строки.
Первая задача решается просто:
$ sed -n '0~4p' file
Как решить вторую, я что-то не нашёл.
ramok
code sed fun&profit
не удержался и сделал весию "прЮвета" #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'
vbooh
Linux GNU sed multiline В sed'е, во всяком случае gnu'том, символы группировки '()' и символ ИЛИ '|' необходимо экранировать, чтобы они работали как соответствующие спецсимволы.