Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在linux下解析文件_Linux_Bash_Parsing - Fatal编程技术网

在linux下解析文件

在linux下解析文件,linux,bash,parsing,Linux,Bash,Parsing,我试图根据推特数据计算一些新闻文章的受欢迎程度。然而,在检索tweet时,我忘记了转义以无法使用的文件结尾的字符 以下是文件中的一行: 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

我试图根据推特数据计算一些新闻文章的受欢迎程度。然而,在检索tweet时,我忘记了转义以无法使用的文件结尾的字符

以下是文件中的一行:

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
“$,$”模式不仅作为字段分隔符出现,而且出现在tweet中,我想从其中删除它。 正确的一行应该是:

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

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

如果我们可以假设在时间、id、转发、用户名和链接字段中没有额外的分隔符,那么您可以从中间部分删除所有的
$,$
,例如:

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

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

我看到的唯一区别是从编号
$80$,$000$,$
$80000
。是吗?是的,我想要$,$,$,$,$,$,$,tweed\u text$,$link问题是你的文本
$80000
是美元,这违反了规则。最好使用另一个字段分隔符。我看到的唯一区别是从编号
$80$,$000$,$
$80000
。是吗?是的,我想要$,$,$,$,$,$,$,tweed\u text$,$link问题是你的文本
$80000
是美元,这违反了规则。最好使用另一个字段分隔符。这非常有效!在测试代码之后,每行出现6次“$,$”。谢谢你,这个很好用!在测试代码之后,每行出现6次“$,$”。非常感谢。