【问题标题】:grep, sort column form filesgrep,对列表单文件进行排序
【发布时间】:2013-04-23 02:47:38
【问题描述】:

我有 x.csv 文件(编号从 1 到 x),它们由两列组成,如下所示:

sometext somedigits

... ...

500 1 

501 2 

502 3 

... ... 

900 y

end

我要做的就是编写一个 bash 脚本,该脚本可以通过升序名称对这些 csv 文件进行排序,并输出一个文件(添加了多列),结果来自 [500..900] 其他文件,所以它应该看起来像:

500 1 .. 1x

501 2 .. 2x

...

900 y .. yx

我希望你能理解我的想法。这很简单,但我无法理解。

例子:

...

550,0.000158823324663182

551,0.00015425166406236

553,0.000141510750525255

554,0.000137520666699473

555,0.000131489691198977

...

这是输出的样子(第一列类似于 [500..900] 中的数组,第二列是结果(数字))。我正在尝试将其余 x.csv 文件中的第二列(按升序排列)添加到一个文件中。

【问题讨论】:

  • 你能给我们一个完整的具体例子吗?只有 2-3 个输入文件,每个文件有 3-4 行(当然还有完整的预期输出)?如果你到目前为止有任何代码,让我们也看看。
  • 升序文件是什么意思
  • 我目前使用的代码(但它是错误的):grep [500..900] *.csv |排序 -n >test.txt
  • 毫无疑问,您想使用join 命令。

标签: bash sorting csv grep


【解决方案1】:
awk '{a[$1]=a[$1] " " $2} END {for( i in a ) print i a[i]}' *.csv | sort -n

【讨论】:

  • 据我所知,awk 更灵活,我可以像数组中的变量一样使用它..
猜你喜欢
  • 2018-07-03
  • 1970-01-01
  • 2014-12-13
  • 2021-03-30
  • 1970-01-01
  • 2011-08-25
  • 1970-01-01
  • 1970-01-01
  • 2014-06-21
相关资源
最近更新 更多