【问题标题】:awk for text processing a cvs file用于文本处理 csv 文件的 awk
【发布时间】:2015-11-08 20:32:17
【问题描述】:

我有一些大的 *.cvs 文本文件,看起来像这样:

    Word,Tag,Lemma
    Off,aa,off
    short,aa,short
    and,sfg3eþ,and
    tall,sþghen,tall
    deers,aþ,deer
    in,never,in
    Africa,nc,Africa
    frv.,aa,frv.
    ---,ta,---
    ,,
    All,nhfn,all
    allowed,lhfnsf,allow
    personell,c,personell
    aggr.,lheþsf,aggr.
    with,aþ,with
    23,ta,23
    as.,nvfn,as.
    sillable.,lheþsf,sillable.
    ,,
    Á,aþ,á 

我需要处理这个文件,以便将第一列放在这样的列表中:

    {[Off short and tall deers in Africa frv],[All allowed personnel aggr. with 23 as syllable.],[Á......],...n]}

最后需要一个:]}

我尝试过的:

    awk 'BEGIN {FS=",";print"{["} /",,"/ {print"],["} END {print"]}"}' 079.cvs

仅打印: {[ ]}

我还发现了这个:

    cat 080.csv | cut -d ',' -f3 >>D.txt

这实际上非常有用:

    Off
    short
    and 
    tall
    ....

但实际上是为了“深入”文件而遗漏了列表元素。

【问题讨论】:

  • 不接受答案以删除您的问题是不好的。如果您使用我的帮助,请保持礼貌。查看您已删除的问题:Producing number sequences

标签: awk text-processing


【解决方案1】:

更新

awk -F, 'NR==1{printf "{["; next} /^--/||!$1{if(a)printf "],["; a=0; next} {printf "%s ",$1; a=1} END{printf "]}"}' file
{[Off short and tall deers in Africa frv. ],[All allowed personell aggr. with 23 as. sillable. ],[Á ]}

【讨论】:

  • 这很好,它打印出文件的最大部分,但以以下结尾: awk: 奇怪的 printf 转换 % 输入记录号 1303,文件 079.csv 源行号 1 awk: 没有足够的参数在 printf(20%) 输入记录号 1303,文件 079.csv 源行号 1
  • 你检查 079.csv 1303 行?
  • 我在之前的评论中忽略了最大的内容,为时已晚。是的,它处理前 1303 行。该文件有 331765 行。
  • 我认为是字段问题,代码 /^--/||!$1 ,该字段不匹配。你可以更新你的源内容
  • line 1303:'20%,ta,20%' --line 1304:'",",",",","' --another file, line n:'30-- 35%,ta,30--35%' -->停在这条线上。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-09
  • 2015-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-05
  • 1970-01-01
相关资源
最近更新 更多