标签: csv

如何制作 Bash 脚本以更改 CSV 文件中的日期格式

我有一系列 CSV 文件,其第二个字段是日期:

R.OUSE BOURTON MILL,2000-03-22T14:50:00,Ammoniacal Nitrogen as N,0.03,mg/l

如何将所有文件的日期格式更改为 DD/MM/YYYY?不需要测量时间。

非常感谢

bash scripts csv text-processing

5
推荐指数
1
解决办法
1498
查看次数

使用 .csv 批量重命名

我在一个位置有 700 个目录,我需要使用 .csv 文件重命名它们,如下所示:

我想用 Column_B 的条目替换 Column_A 的名称。

Column_A           Column_B

 F001               IC500
 F003               IC501
 F006               IC502
 F008               IC503
 ...                ...
Run Code Online (Sandbox Code Playgroud)

如何批量重命名目录?

command-line batch-rename csv

4
推荐指数
1
解决办法
1840
查看次数

从不一致的文本文件创建csv

我在一个文件中包含结构松散的记录,由 3 或 4 行文本组成(大部分)由空行分隔。并非所有记录都有空行分隔符,但每条记录的最后一行都以“已添加”一词开头。我想生成一个 csv 文件,每条记录在一行上,前面是行号。到目前为止,我只能生成由任意数量的空格和冗余逗号分隔的所有记录的串联。

从逻辑上讲,我试图实现以下目标:

读取行,如果行以“已添加”开头,则在末尾保留换行符,
否则将“换行符”替换为“,”,
或者如果行为空白,则将其删除
endif

样本数据:

Peter Green  
Space Monkey at Area 51  
Joined  
Added by SF 3 weeks ago  
Will Rossiter  
Joined  
Added by SF 3 weeks ago

Dean Matthews  
Guitarist at Blues  
Joined  
Added by SF 3 weeks ago  
Hobbit Mak  
Farnborough, United Kingdom  
Joined  
Added by SF 3 weeks ago  

Keneth W Moorfield  
THE STOREMAN  
Joined  
Added by SF 3 weeks ago  
Mick Georgious  
Software Engineer  
Joined  
Added by SF …
Run Code Online (Sandbox Code Playgroud)

command-line sed awk csv text-processing

4
推荐指数
1
解决办法
354
查看次数

查看 CSV 文件的列名?

我有一个 CSV 文件,我想获取每列的列名

样本 :

图片

我怎样才能用 awk 或 sed 或 grep 做到这一点?

command-line csv text-processing

4
推荐指数
1
解决办法
1万
查看次数

在 shell 上将文本文件转换为 CSV

我想将文本文件转换为 CSV 格式。

以下是该文件的摘录:

{"Outdated":false,"Watt":233,"Timestamp":1669647142,"A_Plus":6523.896,"A_Plus_HT":4494.82,"A_Plus_NT":2029.076,"A_Minus":8841.63}
{"Outdated":false,"Watt":235,"Timestamp":1669647152,"A_Plus":6523.896,"A_Plus_HT":4494.82,"A_Plus_NT":2029.076,"A_Minus":8841.63}
{"Outdated":false,"Watt":235,"Timestamp":1669647596,"A_Plus":6523.896,"A_Plus_HT":4494.82,"A_Plus_NT":2029.076,"A_Minus":8841.63}
{"Outdated":false,"Watt":233,"Timestamp":1669651191,"A_Plus":6524.496,"A_Plus_HT":4495.42,"A_Plus_NT":2029.076,"A_Minus":8841.63}
{"Outdated":false,"Watt":276,"Timestamp":1669654797,"A_Plus":6524.816,"A_Plus_HT":4495.74,"A_Plus_NT":2029.076,"A_Minus":8841.63}
{"Outdated":false,"Watt":437,"Timestamp":1669658393,"A_Plus":6525.901,"A_Plus_HT":4496.825,"A_Plus_NT":2029.076,"A_Minus":8841.63}
{"Outdated":false,"Watt":362,"Timestamp":1669661992,"A_Plus":6526.732,"A_Plus_HT":4497.656,"A_Plus_NT":2029.076,"A_Minus":8841.63}
{"Outdated":false,"Watt":471,"Timestamp":1669665603,"A_Plus":6527.062,"A_Plus_HT":4497.986,"A_Plus_NT":2029.076,"A_Minus":8841.63}
Run Code Online (Sandbox Code Playgroud)

该结构类似于 JSON 文件,但不幸的是结构并不完全匹配。我已经使用过这个工具(https://github.com/alingse/jsoncsv),但不幸的是,由于结构错误,我收到了错误消息。

如何将其转换为 CSV 文件?

感谢您的帮助!

command-line csv text-processing json

4
推荐指数
3
解决办法
3246
查看次数

如何将 Evolution 地址簿导出为 csv 文件

将 Evolution 地址簿导出为vcf/vCard 很容易:将地址簿文件/保存为 vcf。
但是导出为 csv 文件怎么样?

evolution address-book csv

3
推荐指数
1
解决办法
1万
查看次数

CSV:连接更多行数据

我有这个file1.csv

A,dog cat horse cow
B,goat deer fish
A,deer goat 
C,dog cat 
C,goat
Run Code Online (Sandbox Code Playgroud)

我需要合并加入类似的行(例如 A 和 C):

A,dog cat horse cow deer goat 
B,goat deer fish
C,dog cat goat
Run Code Online (Sandbox Code Playgroud)

command-line csv text-processing

3
推荐指数
1
解决办法
199
查看次数

将 CSV 文件中的数字转换为其对应的 URL

我有一个包含两列(和一个标题)的 CSV 文件,其中每个元素都包含 0 到 199 之间的任意数字。我想将它们转换为相应的 URL。下面是一个例子:

41,51
Run Code Online (Sandbox Code Playgroud)

应该变成:

http://www.cs.bu.edu/~betke/research/vc-crowd/MSCOCO/41.jpg,http://www.cs.bu.edu/~betke/research/vc-crowd/MSCOCO/51.jpg
Run Code Online (Sandbox Code Playgroud)

这是我要转换的 list.csv 文件:

$ head list.csv
imageA,imageB
41,51
172,100
99,149
83,72
84,160
186,8
93,198
150,21
63,102
Run Code Online (Sandbox Code Playgroud)

command-line csv text-processing

3
推荐指数
2
解决办法
465
查看次数

从前面的 csv 文件中移动特定列(按名称选择列)

考虑这个数据:

#!/usr/bin/env bash
cat > example_file.txt <<EOL
group, value, price
1, 3.21, 3.21
1, 3.42, 4.11
1, 3.5, 1.22
2, 4.1, 9.2
2, 4.2, 2.11
EOL
Run Code Online (Sandbox Code Playgroud)

我想将“值”列移到前面:

value, price, group
3.21, 3.21, 1
3.42, 4.11, 1
3.5, 1.22, 1
4.1, 9.2, 2
4.2, 2.11, 2
Run Code Online (Sandbox Code Playgroud)

问题是:列的顺序(甚至列的数量或许多列的名称——除了始终存在的“值”)因文件而异。所以我必须按名称(而不是顺序)选择值列。

我怎样才能做到这一点?

command-line bash csv text-processing

3
推荐指数
1
解决办法
1903
查看次数

MySQL 导入 CSV 文件真的很慢

我正在尝试将 CSV 文件导入表中,但速度非常慢。我有大约 1000 个文件,每个文件大小为 40 MB。每当我尝试导入它时,我都可以看到例如 MySQL 工作台它以每秒大约 30 - 60 行的速度插入。处理我的所有文件需要很长时间。我怎样才能加快速度?我已经将 mysql.cnf 文件修改为以下配置,不幸的是它没有加快速度:

/etc/mysql/conf.d/mysql.cnf

[mysqld]
innodb_buffer_pool_size=12G
innodb_io_capacity = 2000
innodb_read_io_threads = 48
innodb_thread_concurrency = 0
innodb_write_io_threads = 48
innodb_buffer_pool_size=12G
innodb_log_file_size = 512M
max_connections = 1000
max_allowed_packet = 128M
#key_buffer = 1000M
bulk_insert_buffer_size = 1024M
innodb_doublewrite = 0
innodb_flush_log_at_trx_commit = 2
key_buffer_size = 4000M
Run Code Online (Sandbox Code Playgroud)

它确实说根据 PHPMyAdmin 在 InnoDB 中配置了 12G,所以我可以安全地确认配置至少有效。

万一需要的规格:

OS: Ubuntu 18.04
CPU: 6 cores, 12 threads @ 4.5 GHz
RAM: 32 GB DDR4 @ 3.2 GHz …
Run Code Online (Sandbox Code Playgroud)

mysql phpmyadmin mysql-workbench csv 18.04

3
推荐指数
1
解决办法
2793
查看次数

如何找到txt文件中使用的分隔符并将其转换为逗号分隔的csv?

我有一个带有制表符或空格分隔符的 txt 文件。我需要将其转换为 csv。您如何建议使用命令行这样做?

$ perl -F"//" -nlae 'for (@F) {$a{$_}++};for (keys %a){print $_ if ($a{$_}+1==5 && !($_=~/\w/))};undef %a' moth_gt.txt
Run Code Online (Sandbox Code Playgroud)

上面的命令什么都不输出。

该文件如下所示:

$ head -10 moth_gt.txt 
1.0000  494.5551  234.2510  711.6219  274.2668  481.7198  299.5598  311.0864  339.5756
2.0000  494.6552  233.6892  698.5310  237.2043  478.3979  300.0367  285.5068  300.0367
3.0000  496.0657  234.5680  660.4773  182.6485  477.8938  299.0346  279.7346  239.3273
4.0000  498.0948  236.4126  618.2942  142.6347  477.2553  302.2803  298.6309  175.0104
5.0000  499.2109  237.2335  603.7807  120.0112  473.9058  307.5669  323.1914  136.0130
6.0000  497.2581  236.8611  616.7132  115.5453  473.4415  309.7994  336.1240  123.7323 …
Run Code Online (Sandbox Code Playgroud)

command-line bash format-conversion csv

3
推荐指数
1
解决办法
2825
查看次数

从非常大的 csv 文件中删除“_”

我有一个很大的 csv 文件(120GB),如下所示:

"JE",865438083645,2012-12-05T23:07:36.000Z,24,"NQ",142,"658_55525",475035504705
"JE",875619112765,2012-12-05T23:58:04.000Z,4,"PG",144,"219_9221",835399289335
"JE",125495251245,2012-12-05T18:16:06.000Z,206,"PLJE",153,"763_60771",445355650435
Run Code Online (Sandbox Code Playgroud)

我想从第七列中的值中删除下划线和引号(例如,"658_55525"变为65855525)。我正在使用的数据库的导入工具不允许在导入时转换或操作文件。

从命令行执行此操作的有效方法是什么?

command-line csv text-processing

1
推荐指数
1
解决办法
1189
查看次数

用另一个字符替换一个字符的序列

我有一个网络监控命令的输出,它看起来像这样:

                     391KB     7.48MB     7.86MB
Run Code Online (Sandbox Code Playgroud)

其中有很多空间先。现在我想用,.
我试过了sed 's/ /,/g' input_file > output_file,但结果并不完全符合我的预期:

,,,,,,,,,,,,,,,,,,,,,391KB,,,,,7.48MB,,,,,7.86MB
Run Code Online (Sandbox Code Playgroud)

我什至试过:

sed -r 's/(.*) /\1,/; s/ //g' file.txt > output.txt
Run Code Online (Sandbox Code Playgroud)

但输出如下:

391KB7.48MB,7.86MB
Run Code Online (Sandbox Code Playgroud)

如何用一个逗号替换空格序列?
我认为很高兴提到我想将此数据添加到 csv 文件。

command-line csv text-processing

0
推荐指数
1
解决办法
55
查看次数