mysql - 在 csv 文件中动态编辑列表

标签 mysql csv sed awk

我有一个看起来像这样的 csv 文件:

col1|col2

1|a
2|g
3|f

1|m
3|k
2|n

2|a
1|d
4|r
3|s

其中 | 分隔列,并希望将其转换为类似的东西:

------------------------
fields  >    1  2  3  4
record1      a  g  f
record2      m  n  k
record3      d  a  s  r
------------------------

有办法吗?使用 mysql 或编辑 csv 文件哪个更好?

最佳答案

我写了这个,适用于你的例子:gawk 是必需的

awk -F'|' -v RS="" '{for(i=1;i<=NF;i+=2)a[$i]=$(i+1);asorti(a,d);
for(i=1;i<=length(a);i++)printf "%s", a[d[i]]((i==length(a))?"":" ");delete a;delete d;print ""}' file

例子:

kent$  cat file

1|a
2|g
3|f

1|m
3|k
2|n

2|a
1|d
4|r
3|s
kent$  awk -F'|' -v RS="" '{for(i=1;i<=NF;i+=2)a[$i]=$(i+1);asorti(a,d);
for(i=1;i<=length(a);i++)printf "%s", a[d[i]]((i==length(a))?"":" ");delete a;delete d;print ""}' file
a g f
m n k
d a s r

关于mysql - 在 csv 文件中动态编辑列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15788292/

相关文章:

php - 如何使用 PHP/MySQL 跟踪图像/横幅点击/查看

c - 从 csv 读取,strtod 无法读取带有数字的字符串

regex - 如果数值小于 N%,则删除数值

string - 在 UNIX 文件的每一行中第 N 次出现后替换所有出现的字符

bash - 如何正确格式化主机文件 - bash

sql - 在 SQL 中,我们可以使用 "Union"来合并两个表。 "Intersection"有哪些不同的方法?

php - 确认用户帐号被删除不行

php - mysql 土耳其语字符编码

php - 通过 PHP (phpseclib) 上传文件到 SFTP 服务器

c - 如何使用 USB 端口将数据从 Arduino Uno 发送到 PC