【发布时间】:2016-02-11 23:35:40
【问题描述】:
我有一个正在 bash 中查看的 csv 文件,我正在尝试对其进行操作。我有/正在尝试编辑几件事。结构就像这样,第一行是列(字段)标题
cat,dog,hippopotamus,zebra
1,,3,2
three species, five species,only one,multiple
at,home, at, home, wild, wild
-
如何编辑 csv 中的字段(列)名称?
head -1 test.csv显示字段(列)名称是什么,但它仍然包含逗号,这根本不允许更改字段名称。
关于此的另一部分是我只想编辑长度大于 8 个字符的标题,在这种情况下,我将只使用前 8 个字符。我猜我会使用某种基于字符串长度的循环,但由于我什至不知道如何编辑只有一列的字段名称,所以我不知道该怎么做。在上述场景中,将
hippopotamus更改为hippopot。 -
如何将 csv 中的空单元格替换为
NA或NULL?sed -i 's/ /NULL/g'想法会起作用,但不会。
-
一些单元格中有逗号,与
,分隔符混淆。我使用了下面的代码,它似乎可以工作,但是有没有更好/更安全的方法来做到这一点?sed -i "s/, /_/g" -
或者在类似的情况下,如果多个列包含字符串,有时在一个字符串中带有空格,但我只想删除其中一列中的空格,同时保留其他列,我该如何实现?
sed -i 's/ //g' test.csv
【问题讨论】:
-
如果字段名中包含逗号,如何确定属于哪个字段?字段没有引用吗?否则,这不是正确的“逗号分隔”。
-
你想做的一切在 awk 中绝对是微不足道的,并且已经在这个网站和其他网站上解决了一千次,只需谷歌它。话虽如此 - 您发布的示例输入没有意义,请参阅@BenjaminW 的评论。