The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Вывести из файла строку по совпадению и следующую за ней"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"Вывести из файла строку по совпадению и следующую за ней"  +/
Сообщение от Alting email(ok) on 24-Мрт-10, 13:21 
Коллеги!
Есть в файле запись вида:
aaa bbb ccc ddd=
eee fff ggg

Мне нужно вывести из файла запись dddeee.

Отгрепать, отавкать, отседить :) и вывести только "ddd" и убрать знак "=" я знаю, а вот как вывести из СЛЕДУЮЩЕЙ строки запись "eee" (она всегда первая в колонке и в строке, предыдущая строка всегда оканчивается "=") и склеить ее с ddd ?

Подскажите, пожалуйста!

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Вывести из файла строку по совпадению и следующую за ней"  +/
Сообщение от Pahanivo (ok) on 24-Мрт-10, 14:48 
>[оверквотинг удален]
>eee fff ggg
>
>Мне нужно вывести из файла запись dddeee.
>
>Отгрепать, отавкать, отседить :) и вывести только "ddd" и убрать знак "="
>я знаю, а вот как вывести из СЛЕДУЮЩЕЙ строки запись "eee"
>(она всегда первая в колонке и в строке, предыдущая строка всегда
>оканчивается "=") и склеить ее с ddd ?
>
>Подскажите, пожалуйста!

как вариант перл регекс - там есть якоря конца строки

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

2. "Вывести из файла строку по совпадению и следующую за ней"  +/
Сообщение от KdF (??) on 24-Мрт-10, 15:26 
>[оверквотинг удален]
>>Мне нужно вывести из файла запись dddeee.
>>
>>Отгрепать, отавкать, отседить :) и вывести только "ddd" и убрать знак "="
>>я знаю, а вот как вывести из СЛЕДУЮЩЕЙ строки запись "eee"
>>(она всегда первая в колонке и в строке, предыдущая строка всегда
>>оканчивается "=") и склеить ее с ddd ?
>>
>>Подскажите, пожалуйста!
>
>как вариант перл регекс - там есть якоря конца строки

Посмотреть
grep -A
grep -B

потом отфильтровать его вывод =)

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

4. "Вывести из файла строку по совпадению и следующую за ней"  +/
Сообщение от Alting (ok) on 24-Мрт-10, 15:34 
>[оверквотинг удален]
>>>
>>>Подскажите, пожалуйста!
>>
>>как вариант перл регекс - там есть якоря конца строки
>
>Посмотреть
>grep -A
>grep -B
>
>потом отфильтровать его вывод =)

По-подробнее, пожалуйста, если можно...

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

3. "Вывести из файла строку по совпадению и следующую за ней"  +/
Сообщение от Alting (ok) on 24-Мрт-10, 15:33 
>>[оверквотинг удален]
>
>как вариант перл регекс - там есть якоря конца строки

С перлом не хотелось бы связываться... Хотелось бы решить на чистом bash


Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

5. "Вывести из файла строку по совпадению и следующую за ней"  +/
Сообщение от tux2002 email(ok) on 24-Мрт-10, 18:36 
Я не вчитывался в задание, печать двух строк по совпадению в первой:
cat ./test | awk 'BEGIN {a=-1} {if ($1~/your regexp/) a=FNR; if (FNR==a) print $1; if (FNR==a+1) print $1}'
Остальное либо дальше sed ом, либо развей программку awk
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

6. "Вывести из файла строку по совпадению и следующую за ней"  +/
Сообщение от temny email(??) on 24-Мрт-10, 20:48 

$ echo $'aaa bbb ccc ddd=\neee fff ggg'|sed '/ddd=$/!d;N;s!.* \([^ ]*\n[^ ]*\).*!\1!;s!=\n!!'
dddeee
$

Так?
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

7. "Вывести из файла строку по совпадению и следующую за ней"  +/
Сообщение от temny email(??) on 24-Мрт-10, 20:51 
Вот даже покороче вариант пришел в голову:

$ echo $'aaa bbb ccc ddd=\neee fff ggg'|sed '/ddd=$/!d;s!.* !!;N;s! .*!!;s!=\n!!'
dddeee
$

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

8. "Вывести из файла строку по совпадению и следующую за ней"  +/
Сообщение от Alting (ok) on 25-Мрт-10, 08:14 
>Вот даже покороче вариант пришел в голову:
>
 
>$ echo $'aaa bbb ccc ddd=\neee fff ggg'|sed '/ddd=$/!d;s!.* !!;N;s! .*!!;s!=\n!!'
>dddeee
>$
>

Я идиёт!
Забыл, что sed '\n//g' убирает "Enter" ! :)

Всем спасибо огромное!

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

9. "Вывести из файла строку по совпадению и следующую за ней"  +/
Сообщение от L0n3R4ng3r (ok) on 25-Мрт-10, 16:16 
>[оверквотинг удален]
>eee fff ggg
>
>Мне нужно вывести из файла запись dddeee.
>
>Отгрепать, отавкать, отседить :) и вывести только "ddd" и убрать знак "="
>я знаю, а вот как вывести из СЛЕДУЮЩЕЙ строки запись "eee"
>(она всегда первая в колонке и в строке, предыдущая строка всегда
>оканчивается "=") и склеить ее с ddd ?
>
>Подскажите, пожалуйста!

grep -A 1 "=$" | awk '{if ($NF ~ /=$/) print $NF; else print $1}' | sed -e 's/=//g'

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру