【问题标题】:Append words and delete the lines based on pattern in awk根据 awk 中的模式添加单词并删除行
【发布时间】:2014-07-28 21:28:47
【问题描述】:

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

例如,我有类似的行

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

输出应该是这样的

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

我在 sed 和 awk 中尝试过,但没有成功。我已成功附加信息,但无法删除这些行

谢谢 帕拉维

【问题讨论】:

  • 显示你成功的代码

标签: unix awk sed gawk


【解决方案1】:
sed 'N;N;G;h
s/\(\(<[^>]\{1,\}> *\)\{3\}\)<\([^>]\{1,\}\)>\(.*\)\(\n\)\1 *<\([^>]\{1,\}\)> *\(\(<[^>]\{1,\}> *\)\{2\}\) *\5/\1<\3,\6>\4\5/
t void
:void
s/\(\(<[^>]\{1,\}> *\)\{3\}\)<\([^>]\{1,\}\)>\(.*\)\(\n\)\1 *<\([^>]\{1,\}\)> *\(\(<[^>]\{1,\}> *\)\{2\}\) *\5/\1<\3,\6>\4\5/
t ok
x;b
:ok
s/.$//' YourFile

根据这 3 行为您的文件工作,但由于大量的组参考,不容易阅读或理解。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多