【问题标题】:comparison between txt and csv in bashbash中txt和csv的比较
【发布时间】:2022-10-14 05:49:32
【问题描述】:

我有两个文件,一个 txt 和一个 csv。 txt看起来像

0.5 a 4d
1 b 5e
1.5 c 6f

csv看起来像

h1 h2 h3

a  4d  1
b  5e  2
c  6f  3

我想要做的是取txt文件的第一列并减去csv文件的第3列然后我想将结果添加到txt文件的相应值

例子:

对于第一行,我想在文本文件中执行 1 - 0,5 = 0,5 然后 0,5 + 0,5 = 1 。 (想法是根据 csv 更正 txt。)

在不使用 tmp 文件的情况下执行此操作有一些困难。

【问题讨论】:

  • 请显示完整的输出。
  • 您的示例do 1 - 0,5 = 0,5 then 0,5 + 0,5 = 1 in the text file. 不符合描述`取txt文件的第一列并减去csv文件的第3列然后我想将结果添加到txt文件的相应值`。 ...

标签: linux bash shell csv txt


【解决方案1】:

您可以使用 rquery (https://github.com/fuyuncat/rquery/releases) 来归档它。
以下rq 命令将首先读取文本内容,然后读取 csv 内容并匹配两个文件的行 id 并进行计算。
它的工作方式类似于 SQL 的 JOIN。

[ rquery]$ cat samples/txtnum.txt
0.5 a 4d
1 b 5e
1.5 c 6f
[ rquery]$ cat samples/csvnum.csv
h1 h2 h3
a  4d  1
b  5e  2
c  6f  3
[ rquery]$ ./rq -q "d / /|m @1,@fileline where @fileid=1|s (tofloat(@3)-@r[1][1])+@r[1][1] | f @fileid=2 and @fileline>1 and @fileline-1=@r[1][2]" samples/txtnum.txt samples/csvnum.csv
1
2
3

【讨论】:

    猜你喜欢
    • 2016-07-24
    • 1970-01-01
    • 2017-06-24
    • 2016-01-08
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多