gpt4 book ai didi

linux - linux下解析一个文件

转载 作者:太空狗 更新时间:2023-10-29 11:45:46 24 4
gpt4 key购买 nike

我正在尝试根据 Twitter 数据计算一些新闻文章的流行度。然而,在检索推文时,我忘记对字符进行转义,最终得到一个无法使用的文件。

这是文件中的一行:

1369283975$,$337427565662830592$,$0$,$username$,$Average U.S. 401(k) balance tops $80$,$000$,$ up 75 pct since 2009 http://t.co/etHHMUFpoo #news$,$http://www.reuters.com/article/2013/05/23/funds-fidelity-401k-idUSL2N0E31ZC20130523?feedType=RSS&feedName=marketsNews

'$,$' 模式不仅作为字段分隔符出现,而且出现在推文中,我想从中删除它。正确的行是:

1369283975$,$337427565662830592$,$0$,$username$,$Average U.S. 401(k) balance tops $80000 up 75 pct since 2009 http://t.co/etHHMUFpoo #news$,$http://www.reuters.com/article/2013/05/23/funds-fidelity-401k-idUSL2N0E31ZC20130523?feedType=RSS&feedName=marketsNews

我尝试使用 cut 和 sed,但没有得到我想要的结果。解决这个问题的好策略是什么?

最佳答案

如果我们可以假设时间、id、转推、用户名和链接字段中永远不会有额外的分隔符,那么您可以取出中间部分并从中删除所有 $,$,例如像这样:

perl -ne 'chomp; @a=split(/\$,\$/); $_ = join("", @a[4..($#a-1)]); print join("\$,\$", @a[0..3], $_, $a[$#a]), "\n"' < data.txt

这是做什么的:

  1. 使用 $,$ 作为分隔符拆分行
  2. 取中间部分 = fields[4] .. fields[N-1]
  3. 通过$,$再次加入前4个字段、固定的中间部分和最后一个字段(链接)

这适用于您的示例,但我不知道您可能还有哪些其他极端情况。

验证结果的一个好方法是计算 $,$ 在所有行中出现的次数为 6。您可以通过将结果传递给此来做到这一点:

... | perl -ne 'print scalar split(/\$,\$/), "\n"' | sort -u

(应该输出一行,带有“6”)

关于linux - linux下解析一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16845944/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com