[Решено] Переменная в аргументах редактора sed

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

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

Аватара пользователя
ZyX
Сообщения: 355
ОС: Gentoo

Re: [Решено] Переменная в аргументах редактора sed

Сообщение ZyX »

drBatty писал(а):
09.06.2012 21:28
t.t писал(а):
09.06.2012 21:05
Об этом и я расскажу. Потому что разработчики Debian правильно понимают принцип "do one thing and do it well". Распаковывать это не задача команды less.

это называется "доведение до абсурда". В таком случае tar тоже не должна ничего сжимать/разжимать, а исключительно паковать. ИМХО вполне логично хранить текстовые файлы в сжатом виде, и я не вижу никаких причин, почему я этого не могу делать? Но если я некоторые файлы храню в сжатом виде, то почему-же я не могу их просматривать имеющейся программой просмотра? "do it well" тут не работает.

Чтобы tar что‐то сжала/разжала надо ей это явно сказать. less делает это без указаний, что не нужно. Может вы создали новый язык программирования и назвали его Gz с соответствующим расширением файла и теперь хотите просмотреть с помощью less исходный код на нём?
drBatty писал(а):
09.06.2012 21:28
t.t писал(а):
09.06.2012 21:05
Потому что если я не сказал явно, что мне нужна распаковка, то программа не имеет права за меня об этом "догадываться".

IRL довольно многие программы "догадываются", и в этом нет ничего плохого. Ну вот как пример - gpg. Или всеми любимый vim, который не только распаковывает, но ещё и у многих кодировку подбирает, а у иных даже chmod +x на файлах с sha-bang'ом делает (это уже ИМХО перебор).

При сохранении новых файлов — нормально. Иначе зачем вы вообще его там писали?
Vim распаковкой, кстати, не занимается — работу делают его дополнения.
drBatty писал(а):
09.06.2012 21:28
ZyX писал(а):
09.06.2012 21:12
Вы сказали, что она делает это построчно. Это не так.

насколько я помню, она читает поток какой-то из функций вроде fgets(3), причём там внутренняя буферизация, но читает таки построчно, но ессно не прямо из файла, а из внутреннего буфера. Впрочем, за 5 лет это могло изменится, да и я могу ошибаться, и читает она построчно лишь при нумерации строк. Посмотрите, если вам не лениво...

Я смотрел исключительно с помощью strace. Читает она блоками независимо от того, есть нумерация или нет (впрочем, я слабо представляю себе обратное). Пишет построчно, если есть -n. Из исходников ясно, что используются обёртки над read и write.
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: [Решено] Переменная в аргументах редактора sed

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

Кстати, раз Вы упомянули tar, другой пример приведу: dtrx. Жрёт любые архивы безо всяких ключей, просто как аргументы. Вот и less, отображающую не "как есть", а "с подвыподвертом", тоже нужно было всего лишь иначе назвать, чтобы не создавать путаницы. Вы считаете, что смотреть архив less-ом без распаковки глупо? А я на это отвечаю цитатой: «UNIX не предназначен для ограждения своих пользователей от глупостей, поскольку это оградило бы их и от умных вещей».
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: [Решено] Переменная в аргументах редактора sed

Сообщение drBatty »

ZyX писал(а):
09.06.2012 21:12
cat она нужна — это её задача — взять содержимое файла. sed’у она не нужна в данном случае совершенно. Рассматривайте cat в данном случае как библиотечную функцию «open» с ограниченными возможностями.

ну а мне часто нужно не просто отредактировать файл, но ещё и записать его на своё место. Cat|sed такой возможности не дают. Часто надо отредактировать несколько файлов (а зачем мне sed? один файл я и ручками(vim'ом) подправлю).
ZyX писал(а):
09.06.2012 21:12
«Пакетного режима» нет

был. что-то там читал я когда-то в манах.
ZyX писал(а):
09.06.2012 21:12
Всё. Применять его к группе файлов действительно сложнее, но возможности у vim гораздо шире.

ой, только не надо споров, типа кто сильнее, слон или кит... Поправить 1 файл я могу Vim'ом, в интерактивном режиме, и правлю, ЧСХ. А вот если мне нужно отредактировать 100500 файлов, да ещё и возможно не сегодня, то я беру sed. Читайте первый пост: [Решено] Переменная в аргументах редактора sed
И потом рассказывайте, как и зачем вы туда вставите vim. Это ведь всё внутри скрипта какого-то, и причём там cat - решительно непонятно.

Ладно, будем считать это "просто примером".

Есть ещё одно возражение против конвейера вообще: а если случится ошибка? Как узнать, какая команда вызвала эту ошибку?
ZyX писал(а):
09.06.2012 21:12
Vim’у нужно знать, куда он пишет.

а sed это ваще-то тоже редактор, а не фильтр.
ZyX писал(а):
09.06.2012 21:12
Так ведь обратная совместимость, не починят.

ну вы спрашивали:
> 1. С какой радости та же cut вообще обязана открывать файл? Это не её задача.
авторы таки считают иначе - cut файлы должна резать, а не stdin. Почему - вопрос не ко мне.
ZyX писал(а):
09.06.2012 21:12
Раз он где‐то не хочет, почему‐бы не использовать везде zcat явно? Это аргумент в мою пользу, а не наоборот: zcat file.gz | less будет работать, судя по всему, во всех трёх системах.

поведение less в slackware & RH это не баг, а новая удобная фича. Как и поведение tar и многих других утилит. Если не использовать этих "новых" фич, то можно тоже дойти до маразма.
ZyX писал(а):
09.06.2012 21:12
А раскраска ls, насколько я помню, в /etc/DIR_COLORS. man говорит, что это можно изменить в переменной LS_COLORS.

man 1 ls не говорит, ГДЕ это нужно менять, за то говорит, что _поведение_ ls определяется вовсе не этой переменной, а ключом --color (и тоже молчит о том, где менять), по этой причине поведение действительно будет _неожиданным_ в незнакомой системе.
(вообще-то по дефолту олвейс, однако маинтейнеры ставят авто, потому если за ls вставить cat она будет работать совсем не по дефолту. Можете у себя проверить)
ZyX писал(а):
09.06.2012 21:12
Только в tail его не надо писать самому.

в sed тоже не нужно.
см. здесь http://drbatty.ru/sed/ch07.html#id2539800
ну и в info sed конечно.

t.t писал(а):
09.06.2012 22:00
Вот и less, отображающую не "как есть", а "с подвыподвертом", тоже нужно было всего лишь иначе назвать, чтобы не создавать путаницы.

ну это вопрос опять-таки не ко мне, а к Патрегу и к разрабам RedHat...
t.t писал(а):
09.06.2012 22:00
Вы считаете, что смотреть архив less-ом без распаковки глупо? А я на это отвечаю цитатой: «UNIX не предназначен для ограждения своих пользователей от глупостей, поскольку это оградило бы их и от умных вещей».

глупо лезть в окно, когда можно войти в дверь. И то, что дорожка домой ведёт к двери - удобно и хорошо. А "лезть в окно" никто и не заставляет, cat|less годится как раз для этого случая.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5272
ОС: Gentoo

Re: [Решено] Переменная в аргументах редактора sed

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

drBatty писал(а):
09.06.2012 22:12
(вообще-то по дефолту олвейс, однако маинтейнеры ставят авто, потому если за ls вставить cat она будет работать совсем не по дефолту. Можете у себя проверить)

Да вот ни фига по дефолту не always, а очень даже never. Напишите \ls, чтобы убедиться.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: [Решено] Переменная в аргументах редактора sed

Сообщение drBatty »

/dev/random писал(а):
09.06.2012 22:35
Да вот ни фига по дефолту не always, а очень даже never. Напишите \ls, чтобы убедиться.

ну типа того. ошибся.
тут info надо было читать

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

`--color [=WHEN]'
     Specify whether to use color for distinguishing file types.  WHEN
     may be omitted, or one of:
        * none - Do not use color at all.  This is the default.

        * auto - Only use color if standard output is a terminal.

        * always - Always use color.
     Specifying `--color' and no WHEN is equivalent to `--color=always'.
     Piping a colorized listing through a pager like `more' or `less'
     usually produces unreadable results.  However, using `more -f'
     does seem to work.

     Note that using the `--color' option may incur a noticeable
     performance penalty when run in a directory with very many entries,
     because the default settings require that `ls' `stat' every single
     file it lists.  However, if you would like most of the file-type
     coloring but can live without the other coloring options (e.g.,
     executable, orphan, sticky, other-writable, capability), use
     `dircolors' to set the `LS_COLORS' environment variable like this,
          eval $(dircolors -p | perl -pe \
            's/^((CAP|S[ET]|O[TR]|M|E)\w+).*/$1 00/' | dircolors -)
     and on a `dirent.d_type'-capable file system, `ls' will perform
     only one `stat' call per command line argument.

т.е. с --color оно по дефолту таки олвейс, но ежели без --color то none.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

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

Re: [Решено] Переменная в аргументах редактора sed

Сообщение ZyX »

drBatty писал(а):
09.06.2012 22:12
ну а мне часто нужно не просто отредактировать файл, но ещё и записать его на своё место. Cat|sed такой возможности не дают. Часто надо отредактировать несколько файлов (а зачем мне sed? один файл я и ручками(vim'ом) подправлю).

Я уже говорил — нужен редактор, используем ваш вариант. Нужен фильтр — мой. Не надо уже в котором сообщении говорить мне, что cat|sed не позволяет нормально редактировать файл.
drBatty писал(а):
09.06.2012 22:12
был. что-то там читал я когда-то в манах.

Нет. Есть возможность указать команду, выполняемую до/после загрузки файлов настроек, есть возможность указать откуда брать ввод (замечу, что здесь есть некоторые отличия от ввода с терминала), есть команда bufdo. «Пакетного режима» — нет, то есть нет способа каким‐либо ключом заставить Vim обойти все файлы и выполнить там данные в командной строке команды. Надо сделать так – используйте явно команду bufdo. Есть возможность заставить vim не использовать терминал, но я не могу назвать это «пакетным режимом», так как в скриптах всё равно придётся обходить файлы самостоятельно.
drBatty писал(а):
09.06.2012 22:12
ой, только не надо споров, типа кто сильнее, слон или кит... Поправить 1 файл я могу Vim'ом, в интерактивном режиме, и правлю, ЧСХ. А вот если мне нужно отредактировать 100500 файлов, да ещё и возможно не сегодня, то я беру sed. Читайте первый пост: [Решено] Переменная в аргументах редактора sed
И потом рассказывайте, как и зачем вы туда вставите vim. Это ведь всё внутри скрипта какого-то, и причём там cat - решительно непонятно.

Зачем? Я не могу предложить использовать vim здесь, так как явно никто не собирается редактировать файл — иначе почему cat.

drBatty писал(а):
09.06.2012 22:12
Ладно, будем считать это "просто примером".

Есть ещё одно возражение против конвейера вообще: а если случится ошибка? Как узнать, какая команда вызвала эту ошибку?

Во‐первых, stderr. Во‐вторых, $pipestatus. Из сообщения в stderr обычно всё понятно. Если нет, то коды завершения всех команд есть в $pipestatus.
drBatty писал(а):
09.06.2012 22:12
а sed это ваще-то тоже редактор, а не фильтр.

Когда он редактор — он получает имя файла. Когда фильтр — нет.
drBatty писал(а):
09.06.2012 22:12
> Раз он где‐то не хочет, почему‐бы не использовать везде zcat явно? Это аргумент в мою пользу, а не наоборот: zcat file.gz | less будет работать, судя по всему, во всех трёх системах.
поведение less в slackware & RH это не баг, а новая удобная фича. Как и поведение tar и многих других утилит. Если не использовать этих "новых" фич, то можно тоже дойти до маразма.

Распаковка tar’ом включается только с ключом. Название других утилит в студию, ничего такого «умного» я более припомнить не могу (если не считать vim в комплекте со стандартными дополнениями).
drBatty писал(а):
09.06.2012 22:12
в sed тоже не нужно.
см. здесь http://drbatty.ru/sed/ch07.html#id2539800
ну и в info sed конечно.

Писать буфер нам не нужно, нужно писать то, что будет его заполнять. Разница невелика — tail всё равно проще.

Кроме того, после созерцания скрипта (особенно первого, но и второй тоже неплох) становиться понятно, почему про какой‐то язык могут говорить, что программы на нём выглядят одинаково до и после шифрования. Непонятно только, при чём тут perl.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: [Решено] Переменная в аргументах редактора sed

Сообщение drBatty »

ZyX писал(а):
10.06.2012 00:20
Я уже говорил — нужен редактор, используем ваш вариант. Нужен фильтр — мой.

в качестве фильтров мне обычно и grep/cut/head/tail/и т.д. хватает. И все они умеют принимать имя файла как параметр.
ZyX писал(а):
10.06.2012 00:20
Когда он редактор — он получает имя файла. Когда фильтр — нет.

эх... ну ладно. Загоняйте дальше байты по конвейеру... Я не против.
ZyX писал(а):
10.06.2012 00:20
Распаковка tar’ом включается только с ключом.

нет.

Shell

tar -tvvf icewm.tar.gz drwxr-sr-x slackbuilds/users 0 2012-05-11 19:40 icewm/ -rw-r--r-- slackbuilds/users 721 2012-04-02 07:12 icewm/slack-desc -rwxr-xr-x slackbuilds/users 3988 2012-05-11 19:36 icewm/icewm.SlackBuild -rw-r--r-- slackbuilds/users 134 2011-04-15 12:47 icewm/icewm.desktop drwxr-sr-x slackbuilds/users 0 2012-05-11 19:36 icewm/patches/ -rw-r--r-- slackbuilds/users 640 2012-05-11 19:30 icewm/patches/explicitly-link-fontconfig.diff -rw-r--r-- slackbuilds/users 711 2012-05-11 19:35 icewm/patches/use_ICEWM_deprecated.patch -rw-r--r-- slackbuilds/users 1578 2012-04-02 07:12 icewm/patches/icewm-1.3.7-fix_html_docdir.diff -rw-r--r-- slackbuilds/users 816 2011-04-15 12:47 icewm/xinitrc.icewm -rw-r--r-- slackbuilds/users 280 2012-04-02 07:12 icewm/icewm.info -rw-r--r-- slackbuilds/users 128 2010-05-27 08:51 icewm/README -rw-r--r-- slackbuilds/users 126 2010-05-27 08:51 icewm/doinst.sh


сама утилита догадалась, без подсказки. tgz тоже понимает.
ZyX писал(а):
10.06.2012 00:20
Название других утилит в студию

это которые имя файла используют? или именно архивы различают? Первых много, вторых да, кроме less и tar не припомню.
ZyX писал(а):
10.06.2012 00:20
Писать буфер нам не нужно, нужно писать то, что будет его заполнять. Разница невелика — tail всё равно проще.

ясное дело, проще. И быстрее. я и предлагал использовать tail, без разных ненужных костылей, таких как cat и sed (:
ZyX писал(а):
10.06.2012 00:20
Кроме того, после созерцания скрипта (особенно первого, но и второй тоже неплох) становиться понятно, почему про какой‐то язык могут говорить, что программы на нём выглядят одинаково до и после шифрования. Непонятно только, при чём тут perl.

ну это уже последняя глава, тут примеры из info sed, причём я их уже и не стал редактировать, оставил как есть. В назидание.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

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

Re: [Решено] Переменная в аргументах редактора sed

Сообщение ZyX »

drBatty писал(а):
10.06.2012 04:58
ZyX писал(а):
10.06.2012 00:20
Распаковка tar’ом включается только с ключом.

нет.

Shell

tar -tvvf icewm.tar.gz drwxr-sr-x slackbuilds/users 0 2012-05-11 19:40 icewm/ -rw-r--r-- slackbuilds/users 721 2012-04-02 07:12 icewm/slack-desc -rwxr-xr-x slackbuilds/users 3988 2012-05-11 19:36 icewm/icewm.SlackBuild -rw-r--r-- slackbuilds/users 134 2011-04-15 12:47 icewm/icewm.desktop drwxr-sr-x slackbuilds/users 0 2012-05-11 19:36 icewm/patches/ -rw-r--r-- slackbuilds/users 640 2012-05-11 19:30 icewm/patches/explicitly-link-fontconfig.diff -rw-r--r-- slackbuilds/users 711 2012-05-11 19:35 icewm/patches/use_ICEWM_deprecated.patch -rw-r--r-- slackbuilds/users 1578 2012-04-02 07:12 icewm/patches/icewm-1.3.7-fix_html_docdir.diff -rw-r--r-- slackbuilds/users 816 2011-04-15 12:47 icewm/xinitrc.icewm -rw-r--r-- slackbuilds/users 280 2012-04-02 07:12 icewm/icewm.info -rw-r--r-- slackbuilds/users 128 2010-05-27 08:51 icewm/README -rw-r--r-- slackbuilds/users 126 2010-05-27 08:51 icewm/doinst.sh


сама утилита догадалась, без подсказки. tgz тоже понимает.

Не понимает. Используется анализ содержимого, как файл назван тут не важно. Что важно — почему‐то tar отказывается проделать то же самое со стандартным вводом (пишет файл сжат, используйте явно z) и показывает ошибку «gzip: stdin: неожиданный конец файла» при использовании cat | tar tf /dev/stdin (наверное, gzip получает ввод, уже частично сжёванный file или аналогом, а seek, разумеется, не работает).
Также, надо явно говорить о сжатии создаваемого архива, максимум использовать ключ «a» если лень запоминать какой другой ключ какому алгоритму сжатия соответствует.

Хотя мне это то же не слишком нравится, но здесь есть важное отличие от less — less может показать сжатое содержимое, у tar альтернативой разжатию служит провал. И опять же, он не проделывает ничего такого со стандартным вводом.
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: [Решено] Переменная в аргументах редактора sed

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

drBatty писал(а):
09.06.2012 22:12
Есть ещё одно возражение против конвейера вообще: а если случится ошибка? Как узнать, какая команда вызвала эту ошибку?
Гораздо проще, чем в случае цепочки мнемокоманд sed. Ваш К.О.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: [Решено] Переменная в аргументах редактора sed

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

А вообще выхожу из дискуссии. drBatty, при всём уважении, Ваши аргументы в этой теме сводятся к "потому что так удобнее" (читай: "...мне") или "потому что так правильно" (читай: "...на мой взгляд"). В таком режиме -- без меня.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: [Решено] Переменная в аргументах редактора sed

Сообщение drBatty »

ZyX
ладно, согласен.
t.t писал(а):
13.06.2012 02:08
Гораздо проще, чем в случае цепочки мнемокоманд sed. Ваш К.О.

откуда там ошибки-то?
t.t писал(а):
13.06.2012 02:16
А вообще выхожу из дискуссии. drBatty, при всём уважении, Ваши аргументы в этой теме сводятся к "потому что так удобнее" (читай: "...мне") или "потому что так правильно" (читай: "...на мой взгляд"). В таком режиме -- без меня.

ок... Никаких у меня аргументов не осталось, кроме одного: command file ИМХО проще, чем cat file | command. Ну как всегда - _мне_ проще.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: [Решено] Переменная в аргументах редактора sed

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

drBatty писал(а):
13.06.2012 06:35
t.t писал(а):
13.06.2012 02:08
Гораздо проще, чем в случае цепочки мнемокоманд sed. Ваш К.О.
откуда там ошибки-то?
Оттуда же, откуда и везде.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
ZyX
Сообщения: 355
ОС: Gentoo

Re: [Решено] Переменная в аргументах редактора sed

Сообщение ZyX »

drBatty писал(а):
08.06.2012 08:27
1. некоторые команды не умеют открывать файлы, потому их надо кормить через stdin. (правда я так и не понял - какие)

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

Re: [Решено] Переменная в аргументах редактора sed

Сообщение drBatty »

ZyX писал(а):
14.07.2012 04:14
drBatty писал(а):
08.06.2012 08:27
1. некоторые команды не умеют открывать файлы, потому их надо кормить через stdin. (правда я так и не понял - какие)

tr

tr с русскими буквами не дружит.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

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

Re: [Решено] Переменная в аргументах редактора sed

Сообщение ZyX »

drBatty писал(а):
14.07.2012 08:39
ZyX писал(а):
14.07.2012 04:14
drBatty писал(а):
08.06.2012 08:27
1. некоторые команды не умеют открывать файлы, потому их надо кормить через stdin. (правда я так и не понял - какие)

tr

tr с русскими буквами не дружит.

Ничего, grep с PCRE тоже. Просто спросили, какие команды не умеют открывать файлы, я ответил. Примечательно, что про tr вспомнили только сейчас — видимо все, как и я, просто используют cat. tr я вообще заметил только вспоминая это обсуждение при переделывании одной функции.
Спасибо сказали:
Аватара пользователя
ZyX
Сообщения: 355
ОС: Gentoo

Re: [Решено] Переменная в аргументах редактора sed

Сообщение ZyX »

Ещё одна вещь, которую начал использовать недавно: при

zsh (Created by format.vim)

alias -g L='|less'

можно использовать сокращённую форму cat file L, но не L file. Здесь тоже идёт речь об унификации подхода, но на этот раз возможности сказать «почти все программы поддерживают оба варианта» нет. Замена «L» на что‐то другое здесь также куда как легче любого иного варианта. Можно то же проделать с grep и заменить, к примеру |grep -P на Gp. Вместе с сокращением <file (== cat file | ${READNULLCMD:-$NULLCMD}) это даёт очень хороший эффект.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: [Решено] Переменная в аргументах редактора sed

Сообщение drBatty »

ZyX писал(а):
30.12.2012 23:02
alias

алиасов я могу наточить под любые _свои_ нужды и _свои_ привычки. Под _ваши_ привычки они не подойдут. У вас просто привычка писать cat file… Вот вы так и пишете. И алиасы у вас потому начинаются с |.

Я вот например люблю юзать sed, если я хочу посмотреть файл, я пишу

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

sed '' file

т.к. обычно там 100500 строк, то ничего не видно, и я пишу

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

sed 'чё-то-там' file

а если мне нужно что-то выделить

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

sed 'чё-то-там;выделить-чё-нить' file

ну а записать туда же

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

sed 'чё-то-там;выделить-чё-нить' file -i

у вас так не получится. Вам придётся отправлять всё во временный файл, потом удалять старый, потом переименовывать новый в старый, а мне достаточно добавить -i, что примерно в 50 раз быстрее (:
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

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

Re: [Решено] Переменная в аргументах редактора sed

Сообщение SLEDopit »

drBatty писал(а):
09.06.2012 22:12
Есть ещё одно возражение против конвейера вообще: а если случится ошибка? Как узнать, какая команда вызвала эту ошибку?
set -x ?
drBatty писал(а):
11.01.2013 10:33
что примерно в 50 раз быстрее (:
Только вот написание sed команды может занять несравнимо больше времени, чем конвеера. А если ещё и написать некачественно, то и время работы подкачает. Но тут всё очень зависит от ситуации.
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.
Спасибо сказали:
Аватара пользователя
Subj
Сообщения: 151
Статус: Useful
ОС: win

Re: [Решено] Переменная в аргументах редактора sed

Сообщение Subj »

Вводим понятия cat'офобии и cat'офилии

PS. Сам привык тоже сначала делать cat file | ..., бывает пока стряпаешь регулярку в sed, grep и пр - можно и забыть какой файл то обработать хотел :) . А так все действия выстраиваются в одну логическую цепочку
Building better software with Ada
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: [Решено] Переменная в аргументах редактора sed

Сообщение drBatty »

SLEDopit писал(а):
11.01.2013 12:43
Только вот написание sed команды может занять несравнимо больше времени, чем конвеера. А если ещё и написать некачественно, то и время работы подкачает. Но тут всё очень зависит от ситуации.

…или от знания sed…

Для меня написать скрипт на sed не составит особого труда, и в этом нет никаких моих особых заслуг - этот ЯП прост и примитивен.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

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

Re: [Решено] Переменная в аргументах редактора sed

Сообщение SLEDopit »

drBatty писал(а):
16.01.2013 15:32
…или от знания sed…
Нет. Это, конечно, немаловажный фактор, но когда речь идёт о достаточно нетривиальной задаче, то порой даже с отличным знанием языка придётся повозиться далеко не 2 минуты.
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.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: [Решено] Переменная в аргументах редактора sed

Сообщение drBatty »

SLEDopit писал(а):
16.01.2013 15:59
Это, конечно, немаловажный фактор, но когда речь идёт о достаточно нетривиальной задаче, то порой даже с отличным знанием языка придётся повозиться далеко не 2 минуты.

ага. А вот конвейер с cat будет написан именно за 2 минуты? И именно с cat? А вот по моему мнению, если человек с cat начал, то он очевидно не знал решения задачи. Даже приблизительно. И что-то такое методом тыка слепил. И оно даже работает. Иногда.

Ну а если не две минуты на sed, то либо и конвейер не поможет, либо эта задача изначально не для sed. Но уж не для cat точно.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

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