2016-01-25 20 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 

我需要使用用戶名/用戶/註冊和網站地址的關係。 網站地址始終在用戶/電子郵件/登錄上方。條件可能是=符號。

如果行包含= 那麼這行=用戶 線之上(LINE-1)=網站

我要的是連接用戶和網站的文件。 輸出可以是一個txt文件。用戶和網站可以像在一行f.e

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

或像我的輸入文件

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

的問題是:我怎麼能做出這種狀況呢? 我的意思是我是新的awk/grep/sed,不知道如何構建if條件。 我如何獲得包含= /如何使關係與=和上面的行關係的行上面的行? IN SHORT 將包含=的每行包含在上面的行中。輸出到文件。

謝謝:)

+3

您究竟應該知道哪個電子郵件與哪個網站匹配? – 123

+4

您已經提出了一些類似的問題。你顯然必須提供更明確的要求。正如我所說,請參見[問]和[mcve] –

+0

,電子郵件/用戶名與上面的網站(前面的行)匹配。它關於與用戶名/登錄/郵件匹配的行與行上。 – uxez

回答

1

如何:

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

+0

對於你來說描述它是如何工作的會是一個問題嗎?要花費我很多時間才能找到每個命令的工作原理 – uxez

+1

現在,這只是懶惰。 – Zak

1

awk來救援!

$ awk '/=/{print p "\t" $0} {p=$0}' file | column -t 

accounts.google.com  [email protected] 
www.x-kom.pl   login=przykladowyuzytkownik 
store.steampowered.com username=steamuser 
login.live.com   [email protected] 
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追加模式空間開始按住空格,複製保留空間進入模式空間,更換關鍵字和打印結果。接下來將空間複製到圖案空間。