Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Bash: изменение вывода программы  (Прочитано 2035 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Softwayer

  • Автор темы
  • Активист
  • *
  • Сообщений: 706
  • Arch Linux
    • Просмотр профиля
Доброго времени суток! Подскажите, пожалуйста, как в Bash-скрипте изменить вывод команды. То есть, она выводит blabla linux must die blblba, а мне надо получить blabla linux rulezz blblba

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Bash: изменение вывода программы
« Ответ #1 : 25 Июня 2010, 18:54:37 »
С помощью  sed:

echo "blabla linux must die blblba" | sed s/must\ die/rulez/
Но есть чисто башевский способ. Мануалы ковырять лень.

Оффлайн Softwayer

  • Автор темы
  • Активист
  • *
  • Сообщений: 706
  • Arch Linux
    • Просмотр профиля
Re: Bash: изменение вывода программы
« Ответ #2 : 25 Июня 2010, 18:58:12 »
Хорошо, а как сделать так, чтобы если выводится suxx, то оно бы заменялось на rulezz, а если must die - на forever?

Оффлайн Protopopulus

  • Старожил
  • *
  • Сообщений: 1695
  • А чего вы так смотрите?..
    • Просмотр профиля
Re: Bash: изменение вывода программы
« Ответ #3 : 25 Июня 2010, 18:59:59 »
Хорошо, а как сделать так, чтобы если выводится suxx, то оно бы заменялось на rulezz, а если must die - на forever?
sed 's/что\ надо\ заменить/на\ что\ заменяем/g'
Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus

Оффлайн Softwayer

  • Автор темы
  • Активист
  • *
  • Сообщений: 706
  • Arch Linux
    • Просмотр профиля
Re: Bash: изменение вывода программы
« Ответ #4 : 25 Июня 2010, 19:27:03 »
То есть:
команда | sed 's/suxx/rulezz/g' 's/must\ die/forever/g'
или
команда | sed 's/suxx/rulezz/g'|sed 's/must\ die/forever/g'

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Bash: изменение вывода программы
« Ответ #5 : 25 Июня 2010, 19:29:32 »
echo "blabla linux suxx and must die blblba" | sed 's/must\ die/forever/g; s/suxx/rulezz/g'

Оффлайн Softwayer

  • Автор темы
  • Активист
  • *
  • Сообщений: 706
  • Arch Linux
    • Просмотр профиля
Re: Bash: изменение вывода программы
« Ответ #6 : 25 Июня 2010, 19:30:31 »
Спасибо! Пошёл экспериментировать ;)

Пользователь решил продолжить мысль 25 Июня 2010, 19:45:35:
Хм... Появились странности ;)
В файле weather1 имеется информация о погоде по-аглицки. Хочу частично перевести: cat weather1| sed 's/Rain/Дождь/g' > weather1
weather1 оказывается пустым O_o
« Последнее редактирование: 25 Июня 2010, 19:45:35 от Softwayer »

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Bash: изменение вывода программы
« Ответ #7 : 25 Июня 2010, 19:47:48 »
Ага, а файл то и читается и пишется сам в себя. Естественно пустой будет. Делай так:  sed -i 's/Rain/Дождь/g' weather1

Оффлайн Softwayer

  • Автор темы
  • Активист
  • *
  • Сообщений: 706
  • Arch Linux
    • Просмотр профиля
Re: Bash: изменение вывода программы
« Ответ #8 : 25 Июня 2010, 19:51:58 »
Спасибо огромное!
P.S. А кто мешает файлу и читаться, и писаться в самого себя ;)?

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: Bash: изменение вывода программы
« Ответ #9 : 25 Июня 2010, 19:52:37 »
bash

http://symmetrica.net/unix-linux/ часть 6, про процессы.

bash сначала создает все нужные файлы и открывает их, потом с помощью функции fork запускает одну или несколько своих копий и оставляет у них открытыми файлы с нужными дескрипторами. Потом в копиях подменяет себя на другой исполняемый файл с помощью exec()
« Последнее редактирование: 25 Июня 2010, 19:57:30 от wl »
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Bash: изменение вывода программы
« Ответ #10 : 25 Июня 2010, 19:53:34 »
P.S. А кто мешает файлу и читаться, и писаться в самого себя ;)?
И как ты это себе представляешь? Первым делом переадресация > очищает файл... Так и читать ничего не остается...

Оффлайн Softwayer

  • Автор темы
  • Активист
  • *
  • Сообщений: 706
  • Arch Linux
    • Просмотр профиля
Re: Bash: изменение вывода программы
« Ответ #11 : 25 Июня 2010, 21:05:32 »
Понятно. А можно превратить "6/25/2010" в "25.6.2010"?

Пользователь решил продолжить мысль 25 Июня 2010, 21:09:33:
А то в манах всё очень поверхностно и без примеров :(
« Последнее редактирование: 25 Июня 2010, 21:09:33 от Softwayer »

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Bash: изменение вывода программы
« Ответ #12 : 25 Июня 2010, 21:12:12 »
$ echo "6/25/2010" | awk -F/ '{print $2"."$1"."$3}'
25.6.2010

Оффлайн Softwayer

  • Автор темы
  • Активист
  • *
  • Сообщений: 706
  • Arch Linux
    • Просмотр профиля
Re: Bash: изменение вывода программы
« Ответ #13 : 25 Июня 2010, 21:13:28 »
Спасибо! Что бы я без вас делал!..

Оффлайн truegeek

  • FPGA Designer
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 4214
  • аЦкий схемотехник
    • Просмотр профиля
Re: Bash: изменение вывода программы
« Ответ #14 : 25 Июня 2010, 22:26:55 »
Спасибо! Что бы я без вас делал!..
отправил бы запрос в гугл ;)

 

Страница сгенерирована за 0.016 секунд. Запросов: 21.