2016-01-25 4 views
-5

Это мой входной файлСортировка и группировка линий с, если строительство

otf.msn.com 
otf.msn.com 
accounts.google.com 
[email protected] 
www.x-kom.pl 
login=przykladowyuzytkownik 
allegro.pl 
ssl.allegro.pl 
www.bing.com 
www.bing.com 
www.bing.com 
www.bing.com 
store.steampowered.com 
username=steamuser 
logowanie.interia.pl 
login.live.com 
[email protected] 
www.bing.com 

мне нужно сделать отношения с именем пользователя/пользователя/логин и адрес сайта. Адрес сайта всегда находится над пользователем/электронной почтой/логином. Условием может быть знак =.

Если строка содержит = , то эту строку = пользователь строку выше (строка-1) = сайт

Что я хочу это файл с пользователями и сайтов связанных. Вывод может быть txt-файлом. Пользователь и сайт может быть как в одной строке f.e

accounts.google.com - Email = [email protected] 

или как в моем входном файле

accounts.google.com 
[email protected] 
store.steampowered.com 
username=steamuser 

вопрос: Как я могу сделать это условие? Я имею в виду, что я новичок в awk/grep/sed и не уверен, как построить условие if. Как я могу получить линию над линией, которая включает =/как сделать связь beetwen линии с = и линией выше? IN SHORT группа каждой линии, которая включает = с линией выше. Выведите это в файл.

Спасибо :)

+3

Как, на самом деле, вы должны знать, какой адрес электронной почты соответствует этому сайту? – 123

+4

Вы задали несколько подобных вопросов. Вам явно нужно будет предоставить более явные требования. См. [Ask] и [mcve] –

+0

, как я уже сказал, по электронной почте/имени пользователя соответствует сайту выше (строка до). Его о совпадении строк с именами пользователей/входами/письмами с верхней строкой. – uxez

ответ

1

Как об этом:

$ grep = input.txt -B1 | grep -v -e "--" | sed "N;s/\n/ - /"

+0

Не могли бы вы описать, как это работает? Мне понадобилось много времени, чтобы найти, как работают все команды. – uxez

+1

Теперь это просто лениво. – Zak

0

Я не думаю, что это стоит, чтобы ответить на этот вопрос так, как он был «вопрос», но она удовлетворяет мою некрофил страсть к взламывать sed. Так простите меня, что я не мог не ответить на это.

#! /bin/sh 
sed -n " 
/^Email/{ 
H;g;s/\nEmail=/ /p 
} 
h" <<EOF 
otf.msn.com 
otf.msn.com 
accounts.google.com 
[email protected] 
www.x-kom.pl 
login=przykladowyuzytkownik 
allegro.pl 
ssl.allegro.pl 
www.bing.com 
www.bing.com 
www.bing.com 
www.bing.com 
store.steampowered.com 
username=steamuser 
logowanie.interia.pl 
login.live.com 
[email protected] 
www.bing.com 
EOF 

Выход:

accounts.google.com [email protected] 

Если строка начинается с Email дописывания шаблона держать пространство, копировать удержания пространства в пространство картины, заменить слова и распечатать результат. Следующая копия удерживает пространство в пространстве шаблонов.

Смежные вопросы