这是我的输入文件
otf.msn.com
otf.msn.com
accounts.google.com
Email=adresemail@gmail.com
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
login=mailhotmail@hotmail.com
www.bing.com
我需要与用户名/用户/登录和站点地址建立关系。
站点地址始终位于用户/电子邮件/登录之上。条件可以是=
符号。
如果行包含=
然后这行=用户
上面的行(第1行)=网站
我想要的是连接用户和网站的文件。 输出可以是txt文件。用户和网站可以像一行一样f.e
accounts.google.com - Email = adresmail@gmail.com
或者喜欢我的输入文件
accounts.google.com
Email=adresmail@gmail.com
store.steampowered.com
username=steamuser
问题是:我怎样才能达到这个条件?
我的意思是我是awk / grep / sed的新手,不知道如何构建if条件。
如何获得包含=
/如何使关联beetwen与=
和上面的行相交的行之上的行?
简而言之
将包含=
的每一行与上面的行分组。将此输出到文件。
谢谢:)
答案 0 :(得分:1)
这个怎么样:
$ grep = input.txt -B1 | grep -v -e "--" | sed "N;s/\n/ - /"
答案 1 :(得分:1)
awk
救援!
$ awk '/=/{print p "\t" $0} {p=$0}' file | column -t
accounts.google.com Email=adresemail@gmail.com
www.x-kom.pl login=przykladowyuzytkownik
store.steampowered.com username=steamuser
login.live.com login=mailhotmail@hotmail.com
答案 2 :(得分:0)
我认为以“被问到”的方式回答这个问题是不值得的,但它满足了我对hack sed
的necrophiliac热情。所以请原谅我,我忍不住回答这个问题。
#! /bin/sh
sed -n "
/^Email/{
H;g;s/\nEmail=/ /p
}
h" <<EOF
otf.msn.com
otf.msn.com
accounts.google.com
Email=adresemail@gmail.com
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
login=mailhotmail@hotmail.com
www.bing.com
EOF
输出是:
accounts.google.com adresemail@gmail.com
如果行以Email
附加模式空间以保留空间,则将保留空间复制到模式空间,替换关键字并打印结果。下一个复制保留空间以模式空间。