【问题标题】:Using awk/cut/sed with lines containing different numbers of fields将 awk/cut/sed 与包含不同数量字段的行一起使用
【发布时间】:2013-02-08 16:26:21
【问题描述】:

我正在使用 pinboard.in API 来获取我当前书签的列表。结果如下所示:

<post href="https://www.nocc.meezy.com/doc/view.cgi?id=715" time="2013-02-11T17:38:10Z" description="Disk Errors Process Flow Chart" extended="" tag="nocc work" hash="a3419515b2e956e86886ba630b6028b7" meta="d793aeef6133a26e361695181eb57b9d"    />
<post href="https://www.nocc.meezy.com/doc/view.cgi?id=39" time="2013-02-11T17:38:08Z" description="Using socat" extended="" tag="socat work" hash="fd60523bf841b2b95674a0e1d4401f4d" meta="5f2b6ad395fe4da05b2987d199b675ea"    />
<post href="https://agora.meezy.com/wiki/Development_Tools" time="2013-02-11T17:38:06Z" description="Development Tools - meezyWiki" extended="" tag="devtools work" hash="dcf904433987a125c00a88bcaf31cad27" meta="5e744562282561390a0417223d323aee"    />

我只对 URL、描述和标签感兴趣,所以我希望结果如下所示:

https://www.nocc.meezy.com/doc/view.cgi?id=715 description="Disk Errors Process Flow Chart" tag="nocc work"  
https://www.nocc.meezy.com/doc/view.cgi?id=39 description="Using socat" extended="" tag="socat work"  
https://agora.meezy.com/wiki/Development_Tools description="Development Tools - meezyWiki" tag="devtools work

我对 awk/cut/sed 了解一些,但不足以告诉他们在描述和标签字段包含空格和不同数量的字符串时如何正确计算字段数。

如果我的生活依赖于它,我可能会拼凑出一些非常糟糕的解决方案,但我宁愿找一个比我更了解他们的人来找到一个合适的解决方案。

谢谢

【问题讨论】:

  • 最好不要尝试使用 sed/awk/cut 解析 XML,因为这些工具不适合这项工作。这是 XML;使用 XML 解析器。
  • 虽然如上所述 - UNIX 工具不是解析 XML 的好选择,但我猜你是在文本文件中编写这些并尝试列出这些 URL?

标签: unix sed awk cut


【解决方案1】:

当您使用 regex/awk/sed.. 使用 xml 时,您应该知道风险。这是满足您要求的 sed 单线:

 sed -r 's/^.*"(http)/\1/; s/" time=.*( desc)/ \1/; s/extended=.*( tag=")/\1/; s/hash=.*//' file

用你的例子测试:

kent$  sed -r 's/^.*"(http)/\1/; s/" time=.*( desc)/ \1/; s/extended=.*( tag=")/\1/; s/hash=.*//' file
https://www.nocc.meezy.com/doc/view.cgi?id=715  description="Disk Errors Process Flow Chart"  tag="nocc work" 
https://www.nocc.meezy.com/doc/view.cgi?id=39  description="Using socat"  tag="socat work" 
https://agora.meezy.com/wiki/Development_Tools  description="Development Tools - meezyWiki"  tag="devtools work" 

【讨论】:

    猜你喜欢
    • 2014-04-19
    • 2017-02-01
    • 2021-03-14
    • 2017-12-03
    • 2016-08-14
    • 2023-03-28
    • 2020-06-19
    • 1970-01-01
    • 2017-12-23
    相关资源
    最近更新 更多