【问题标题】:Exporting data from shell as 2 seperate columns将 shell 中的数据导出为 2 个单独的列
【发布时间】:2017-10-21 07:27:10
【问题描述】:

就目前而言,我的 mac 终端中有大量数据,看起来像这样:

0001   Jimbo    Random-tweet
0002   Jimbo    Random-tweet
0003   Doug     Another-random-tweet
0004   Charles  Another-random-tweet 

我现在正在使用:cut -f 2 Twitter_Data_1 |sort | uniq -c > Uniq.csv

这是收集每个唯一用户以及他们发布了多少推文。 这就是它在 Uniq.csv 中的样子

2 Jimbo
1 Charles
1 Doug

唯一的问题是它们在同一列中。我需要它们位于不同的列中。

是否可以快速更改代码以实现此目的?

任何帮助将不胜感激。

【问题讨论】:

    标签: shell terminal


    【解决方案1】:

    要在 CSV 中的单独列中显示您的记录,您只需将 , 作为分隔符,而不是在当前输出中使用空格

    为此,您可以使用tr 命令将所有空格转换为,

    cut -f 2 Twitter_Data_1 |sort | uniq -c | tr " " "," > Uniq.csv
    

    或使用 awk

    cut -f 2 Twitter_Data_1 |sort | uniq -c | awk '{print $1","$2}' > Uniq.csv
    

    或仅使用 awk

    awk '{a[$2]++}  END{for(i in a){print a[i]","i} }' Twitter_Data_1 > Uniq.csv
    

    输出:

    2,Jimbo
    1,Charles
    1,Doug
    

    【讨论】:

      【解决方案2】:

      为您的场景尝试以下命令,

      awk '{cnt[$2]++} END {for (word in cnt) print cnt[word], word}' Twitter_Data_1 > Uniq.csv
      

      重复问题:Using awk to count the number of occurrences of a word in a column

      【讨论】:

      • 您介意解释一下吗?导出到单独文件的代码的哪一部分?
      猜你喜欢
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 2019-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-11
      • 2016-03-21
      相关资源
      最近更新 更多