Регистрация |  Правила Форума | Как разместить объявление? Хостинг обеспечен IQHost.ru и VPSVille.ru | uptime: 14 лет 1 месяц 11 дней| всего репутации: +380657.97 
Как разместить объявление?
 ФотогалереяФотогалерея   Слежу за темойСлежу за темой   ПоискПоиск    Пользователи   ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Помогите решить задачку. на sed, awk etc.





Все новые темы тут
Начать новую тему   Ответить на тему    Список форумов SYSAdmins.RU -> Unix для новичков
Предыдущая тема :: Следующая тема  
Автор Сообщение
Blog
Новичок



Зарегистрирован: 15.10.2008
Пользователь #: 72,141
Сообщения: 68

Репутация: 41Репутация: 41Репутация: 41Репутация: 41 Добавь репутацию, если тебе помоглиСними репутацию если пользователь неадекватен

СообщениеДобавлено: Вт 17 Янв, 2012 11:12    Заголовок сообщения: Помогите решить задачку. на sed, awk etc. Добавить пользователя в список игнора Ответить с цитатой

Необходимо пример:


testsed1
testsed2
testsed3
testsed4

после testsed3 вставить свой "текст" с новой строки, остальное оставить без изменений.

Спасибо.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
newser
 



Зарегистрирован: 08.04.2004
Пользователь #: 16,366
Сообщения: 14727

Репутация: 395.2Репутация: 395.2 Добавь репутацию, если тебе помоглиСними репутацию если пользователь неадекватен
Голоса: 97

СообщениеДобавлено: Вт 17 Янв, 2012 11:15    Заголовок сообщения: Добавить пользователя в список игнора Ответить с цитатой

Blog писал(а):
после testsed3 вставить свой "текст" с новой строки, остальное оставить без изменений.


А что именно у Вас не получается?

_________________
Модератор разделов "Unix" и "Unix для новичков".
Правила (ППВР) разделов можно прочитать здесь.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Blog
Новичок



Зарегистрирован: 15.10.2008
Пользователь #: 72,141
Сообщения: 68

Репутация: 41Репутация: 41Репутация: 41Репутация: 41 Добавь репутацию, если тебе помоглиСними репутацию если пользователь неадекватен

СообщениеДобавлено: Вт 17 Янв, 2012 11:19    Заголовок сообщения: Добавить пользователя в список игнора Ответить с цитатой

Не могу понять как добавить с новой строки если делать так sed -e 's/testsed3/test/g' то он меняет так sed -e '/еуыеыув3/G' подставляет пустую строку а как подставить не пустую а нужную например из переменной какой не пойму.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
жывая йогуртовая культура
подпись на выбор, в личку sklifу



Зарегистрирован: 05.02.2010
Пользователь #: 84,937
Сообщения: 16318
Откуда: 127.0.0.1
Репутация: 450.5Репутация: 450.5 Добавь репутацию, если тебе помоглиСними репутацию если пользователь неадекватен
Голоса: 60

СообщениеДобавлено: Вт 17 Янв, 2012 13:57    Заголовок сообщения: Добавить пользователя в список игнора Ответить с цитатой

Код:
# cat tst
testsed1
testsed2
testsed3
testsed4
# awk -v txt="dhkjghk" '{if( $0~/testsed3/) $0=$0"\n"txt; print;}' tst
testsed1
testsed2
testsed3
dhkjghk
testsed4

_________________
# man woman &>/dev/null; [ $? -ne 0 ] && echo '502 Bad Gateway!' || echo 'Alena dast!'
не все йогурты одинаково полезны...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Flyer_SPb
подпись на выбор, в личку sklifу



Зарегистрирован: 26.02.2004
Пользователь #: 14,733
Сообщения: 12211
Откуда: 2:5030
Репутация: 562.2 Добавь репутацию, если тебе помоглиСними репутацию если пользователь неадекватен
Голоса: 77

СообщениеДобавлено: Вт 17 Янв, 2012 14:19    Заголовок сообщения: Добавить пользователя в список игнора Ответить с цитатой

awk -v txt="dhkjghk" '{sub(/^testsed3$/,"&\n"txt);print;}' tst
_________________
У кошки четыре ноги: вход, выход, земля и питание.
Яхта - углубление в море, выложенное деревом. В него можно без конца бросать деньги.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
lavr
Unix guru
<B><I>Unix guru</I></B>



Зарегистрирован: 13.05.2003
Пользователь #: 5,821
Сообщения: 8160

Репутация: 501.4 Добавь репутацию, если тебе помоглиСними репутацию если пользователь неадекватен
Голоса: 63

СообщениеДобавлено: Вт 17 Янв, 2012 14:55    Заголовок сообщения: Re: Помогите решить задачку. на sed, awk etc. Добавить пользователя в список игнора Ответить с цитатой

Blog писал(а):
Необходимо пример:


testsed1
testsed2
testsed3
testsed4

после testsed3 вставить свой "текст" с новой строки, остальное оставить без изменений.

Спасибо.


если гнусный sed:

# echo 'testsed1
testsed2
testsed3
testsed4
' | sed '/testsed3/a\mytext'
#

ну или

# sed '/testsed3/a\mytext' filename

или

# cat filename | sed -e '/testsed3/a\mytext'

все одной строкой.
вам останется только использовать перенаправление in/out для
перезаписи в исходный(нужный) файл

_________________
Good luck,
--
lavr
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
newser
 



Зарегистрирован: 08.04.2004
Пользователь #: 16,366
Сообщения: 14727

Репутация: 395.2Репутация: 395.2 Добавь репутацию, если тебе помоглиСними репутацию если пользователь неадекватен
Голоса: 97

СообщениеДобавлено: Вт 17 Янв, 2012 15:01    Заголовок сообщения: Добавить пользователя в список игнора Ответить с цитатой

Blog писал(а):
Не могу понять как добавить с новой строки если делать так sed -e 's/testsed3/test/g' то он меняет так sed -e '/еуыеыув3/G' подставляет пустую строку а как подставить не пустую а нужную например из переменной какой не пойму.


Читайте man sed на предмет функции 'a':

Цитата:

[1addr]a\
text Write text to standard output immediately before each attempt to
read a line of input, whether by executing the ``N'' function or
by beginning a new cycle.


Применение:

В интерактивном sh/bash:

Код:

$ cat testfile
test1
test2
test3
test4
$ cat testfile | sed '/test3/a\
> testmid
>'
test1
test2
test3
testmid
test4


В интерактивном csh/tcsh:

Код:

> cat testfile | sed '/test3/a\\
testmid\
? '
test1
test2
test3
testmid
test4


В sh/bash скрипте:

Код:

#!/bin/sh

cat aaa | sed '/test3/a\
testmid
'

_________________
Модератор разделов "Unix" и "Unix для новичков".
Правила (ППВР) разделов можно прочитать здесь.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Blog
Новичок



Зарегистрирован: 15.10.2008
Пользователь #: 72,141
Сообщения: 68

Репутация: 41Репутация: 41Репутация: 41Репутация: 41 Добавь репутацию, если тебе помоглиСними репутацию если пользователь неадекватен

СообщениеДобавлено: Вт 17 Янв, 2012 15:38    Заголовок сообщения: Добавить пользователя в список игнора Ответить с цитатой

Спасибо за помощь. Осталась проблемка не обходимо делать подстановку из глобал переменной

F=''/usr/local/bin/ezmlm-issubn '$DIR$list' "'$DIR$list/digest'" '$DIR$list/allow' '$DIR$list/mod' || env SENDER=`expr "$SENDER" : ".*\(@.*\)"`"
awk -v txt=$F '{sub(/^testsed3$/,"&\n"txt);print;}' tst

в переменной вызов программы с функциями и awk не нравятся пути итд. Это как то можно обойти?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Предыдущая тема :: Следующая тема  
Начать новую тему   Ответить на тему    Список форумов SYSAdmins.RU -> Unix для новичков Часовой пояс: GMT + 4


Страница 1 из 1
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете добавлять приложения в этом форуме
Вы можете скачивать файлы в этом форуме

Пишите нам!
Архитектурная мастерская.
liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня
Яндекс.Метрика



Page generation time: 0.0703s (PHP: 42% - SQL: 58%) - SQL queries: 31 - GZIP disabled - Debug off