关于unix:根据awk中的模式附加单词并删除行

Append words and delete the lines based on pattern in awk

如果文件的前三行相同,那么我想将第4和5字符串中其他行中的信息附加到第4字符串中的第一行,并删除这些行。

例如,我有像

这样的行

1
2
3
 <b.com> <c.com> <site> <domain> <lang>
 <b.com> <c.com> <site2> <domain2> <lang>
 <b.com> <c.com> <site3> <domain2> <lang>

输出应类似于

1
 <b.com> <c.com> <site,site2,site3,domain2> <domain> <lang>

我在sed和awk中尝试过,但没有成功。我成功添加了信息,但是无法删除行

谢谢
帕拉维


1
2
3
4
5
6
7
8
9
10
11
sed 'N;N;G;h
s/\\(\\(<[^>]\\{1,\\}> *\\)\\{3\\}\\)<\\([^>]\\{1,\\}\\)>\\(.*\\)\\(\
\\)\\1 *<\\([^>]\\{1,\\}\\)> *\\(\\(<[^>]\\{1,\\}> *\\)\\{2\\}\\) *\\5/\\1<\\3,\\6>\\4\\5/
t void
:void
s/\\(\\(<[^>]\\{1,\\}> *\\)\\{3\\}\\)<\\([^>]\\{1,\\}\\)>\\(.*\\)\\(\
\\)\\1 *<\\([^>]\\{1,\\}\\)> *\\(\\(<[^>]\\{1,\\}> *\\)\\{2\\}\\) *\\5/\\1<\\3,\\6>\\4\\5/
t ok
x;b
:ok
s/.$//' YourFile

基于这3行为您的文件工作,但由于有很多组引用,因此不易阅读或理解。